aboutsummaryrefslogtreecommitdiffstats
path: root/gcc-4.4.3/libstdc++-v3/include/ext
diff options
context:
space:
mode:
Diffstat (limited to 'gcc-4.4.3/libstdc++-v3/include/ext')
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/algorithm528
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/array_allocator.h154
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/atomicity.h113
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/bitmap_allocator.h1145
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/cast.h113
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/codecvt_specializations.h507
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/concurrence.h322
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/debug_allocator.h124
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/enc_filebuf.h62
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/extptr_allocator.h176
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/functional425
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/iterator113
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/malloc_allocator.h134
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/memory195
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/mt_allocator.h751
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/new_allocator.h130
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/numeric146
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/numeric_traits.h135
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp683
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp173
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp67
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp85
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp211
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp497
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp70
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp81
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp218
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp272
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp120
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp182
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp64
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp211
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp136
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp237
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp381
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp56
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp120
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp156
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp146
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp250
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp357
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp152
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp144
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp159
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp246
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp91
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp64
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp183
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp56
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp253
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp172
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp78
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp116
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp61
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp49
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp234
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp97
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp98
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp192
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp73
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp216
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp232
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp636
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp83
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp117
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp191
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp56
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp49
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp91
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp101
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp95
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp71
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp41
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp100
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp43
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp70
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp71
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp83
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp88
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp133
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp54
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp54
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp59
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp46
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp125
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp332
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp360
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp68
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp179
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp223
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp54
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp71
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp77
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp100
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp85
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp86
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp70
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp46
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp40
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp677
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp58
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp43
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp111
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp118
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp83
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp100
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp137
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp58
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp58
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp107
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp108
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp59
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp359
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp327
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp73
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp77
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp77
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp77
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp162
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp154
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp152
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp141
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp150
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp64
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp175
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp88
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp349
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp123
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp52
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp95
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp141
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp57
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp60
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp135
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp90
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp57
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp106
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp80
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp359
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp59
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp86
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp51
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp273
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp84
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp193
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp60
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp63
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp292
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp522
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp51
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp137
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp183
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp91
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp236
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp50
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp101
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp216
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp140
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp79
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp111
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp214
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp117
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp319
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp269
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp124
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp58
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp465
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp599
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp120
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp171
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp128
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp338
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp86
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp515
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp484
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp63
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp150
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp254
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp229
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp113
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp350
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp91
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp100
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp78
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp289
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp39
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp46
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp115
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp138
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp280
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp313
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp124
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp88
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp121
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp107
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp154
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp262
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp198
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp81
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp53
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp211
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp90
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp289
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp94
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp161
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp249
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp125
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp137
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp73
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp102
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp74
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp157
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp99
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp39
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp125
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp283
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp298
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp112
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp113
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp136
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp106
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp112
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp296
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp51
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp326
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp126
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp351
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp55
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp116
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp50
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp141
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp209
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp116
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp50
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp183
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp151
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp89
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp72
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp99
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp249
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp167
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp82
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp129
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp151
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp150
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp143
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/exception.hpp103
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp604
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp136
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp125
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp363
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp162
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp355
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pod_char_traits.h182
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pointer.h551
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/pool_allocator.h263
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/rb_tree93
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/rc_string_base.h718
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/rope2958
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/ropeimpl.h1701
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/slist1077
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/sso_string_base.h592
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/stdio_filebuf.h157
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/stdio_sync_filebuf.h279
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/string_conversions.h94
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/throw_allocator.h448
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/type_traits.h204
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/typelist.h544
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/vstring.h2594
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/vstring.tcc696
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/vstring_fwd.h87
-rw-r--r--gcc-4.4.3/libstdc++-v3/include/ext/vstring_util.h180
302 files changed, 0 insertions, 57902 deletions
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/algorithm b/gcc-4.4.3/libstdc++-v3/include/ext/algorithm
deleted file mode 100644
index 4cd1dae80..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/algorithm
+++ /dev/null
@@ -1,528 +0,0 @@
-// Algorithm extensions -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/algorithm
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _EXT_ALGORITHM
-#define _EXT_ALGORITHM 1
-
-#pragma GCC system_header
-
-#include <algorithm>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::ptrdiff_t;
- using std::min;
- using std::pair;
- using std::input_iterator_tag;
- using std::random_access_iterator_tag;
- using std::iterator_traits;
-
- //--------------------------------------------------
- // copy_n (not part of the C++ standard)
-
- template<typename _InputIterator, typename _Size, typename _OutputIterator>
- pair<_InputIterator, _OutputIterator>
- __copy_n(_InputIterator __first, _Size __count,
- _OutputIterator __result,
- input_iterator_tag)
- {
- for ( ; __count > 0; --__count)
- {
- *__result = *__first;
- ++__first;
- ++__result;
- }
- return pair<_InputIterator, _OutputIterator>(__first, __result);
- }
-
- template<typename _RAIterator, typename _Size, typename _OutputIterator>
- inline pair<_RAIterator, _OutputIterator>
- __copy_n(_RAIterator __first, _Size __count,
- _OutputIterator __result,
- random_access_iterator_tag)
- {
- _RAIterator __last = __first + __count;
- return pair<_RAIterator, _OutputIterator>(__last, std::copy(__first,
- __last,
- __result));
- }
-
- /**
- * @brief Copies the range [first,first+count) into [result,result+count).
- * @param first An input iterator.
- * @param count The number of elements to copy.
- * @param result An output iterator.
- * @return A std::pair composed of first+count and result+count.
- *
- * This is an SGI extension.
- * This inline function will boil down to a call to @c memmove whenever
- * possible. Failing that, if random access iterators are passed, then the
- * loop count will be known (and therefore a candidate for compiler
- * optimizations such as unrolling).
- * @ingroup SGIextensions
- */
- template<typename _InputIterator, typename _Size, typename _OutputIterator>
- inline pair<_InputIterator, _OutputIterator>
- copy_n(_InputIterator __first, _Size __count, _OutputIterator __result)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
- typename iterator_traits<_InputIterator>::value_type>)
-
- return __copy_n(__first, __count, __result,
- std::__iterator_category(__first));
- }
-
- template<typename _InputIterator1, typename _InputIterator2>
- int
- __lexicographical_compare_3way(_InputIterator1 __first1,
- _InputIterator1 __last1,
- _InputIterator2 __first2,
- _InputIterator2 __last2)
- {
- while (__first1 != __last1 && __first2 != __last2)
- {
- if (*__first1 < *__first2)
- return -1;
- if (*__first2 < *__first1)
- return 1;
- ++__first1;
- ++__first2;
- }
- if (__first2 == __last2)
- return !(__first1 == __last1);
- else
- return -1;
- }
-
- inline int
- __lexicographical_compare_3way(const unsigned char* __first1,
- const unsigned char* __last1,
- const unsigned char* __first2,
- const unsigned char* __last2)
- {
- const ptrdiff_t __len1 = __last1 - __first1;
- const ptrdiff_t __len2 = __last2 - __first2;
- const int __result = __builtin_memcmp(__first1, __first2,
- min(__len1, __len2));
- return __result != 0 ? __result
- : (__len1 == __len2 ? 0 : (__len1 < __len2 ? -1 : 1));
- }
-
- inline int
- __lexicographical_compare_3way(const char* __first1, const char* __last1,
- const char* __first2, const char* __last2)
- {
-#if CHAR_MAX == SCHAR_MAX
- return __lexicographical_compare_3way((const signed char*) __first1,
- (const signed char*) __last1,
- (const signed char*) __first2,
- (const signed char*) __last2);
-#else
- return __lexicographical_compare_3way((const unsigned char*) __first1,
- (const unsigned char*) __last1,
- (const unsigned char*) __first2,
- (const unsigned char*) __last2);
-#endif
- }
-
- /**
- * @brief @c memcmp on steroids.
- * @param first1 An input iterator.
- * @param last1 An input iterator.
- * @param first2 An input iterator.
- * @param last2 An input iterator.
- * @return An int, as with @c memcmp.
- *
- * The return value will be less than zero if the first range is
- * "lexigraphically less than" the second, greater than zero if the second
- * range is "lexigraphically less than" the first, and zero otherwise.
- * This is an SGI extension.
- * @ingroup SGIextensions
- */
- template<typename _InputIterator1, typename _InputIterator2>
- int
- lexicographical_compare_3way(_InputIterator1 __first1,
- _InputIterator1 __last1,
- _InputIterator2 __first2,
- _InputIterator2 __last2)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator1>)
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator2>)
- __glibcxx_function_requires(_LessThanComparableConcept<
- typename iterator_traits<_InputIterator1>::value_type>)
- __glibcxx_function_requires(_LessThanComparableConcept<
- typename iterator_traits<_InputIterator2>::value_type>)
- __glibcxx_requires_valid_range(__first1, __last1);
- __glibcxx_requires_valid_range(__first2, __last2);
-
- return __lexicographical_compare_3way(__first1, __last1, __first2,
- __last2);
- }
-
- // count and count_if: this version, whose return type is void, was present
- // in the HP STL, and is retained as an extension for backward compatibility.
- template<typename _InputIterator, typename _Tp, typename _Size>
- void
- count(_InputIterator __first, _InputIterator __last,
- const _Tp& __value,
- _Size& __n)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- __glibcxx_function_requires(_EqualityComparableConcept<
- typename iterator_traits<_InputIterator>::value_type >)
- __glibcxx_function_requires(_EqualityComparableConcept<_Tp>)
- __glibcxx_requires_valid_range(__first, __last);
-
- for ( ; __first != __last; ++__first)
- if (*__first == __value)
- ++__n;
- }
-
- template<typename _InputIterator, typename _Predicate, typename _Size>
- void
- count_if(_InputIterator __first, _InputIterator __last,
- _Predicate __pred,
- _Size& __n)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- __glibcxx_function_requires(_UnaryPredicateConcept<_Predicate,
- typename iterator_traits<_InputIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- for ( ; __first != __last; ++__first)
- if (__pred(*__first))
- ++__n;
- }
-
- // random_sample and random_sample_n (extensions, not part of the standard).
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _ForwardIterator, typename _OutputIterator,
- typename _Distance>
- _OutputIterator
- random_sample_n(_ForwardIterator __first, _ForwardIterator __last,
- _OutputIterator __out, const _Distance __n)
- {
- // concept requirements
- __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
- __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
- typename iterator_traits<_ForwardIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- _Distance __remaining = std::distance(__first, __last);
- _Distance __m = min(__n, __remaining);
-
- while (__m > 0)
- {
- if ((std::rand() % __remaining) < __m)
- {
- *__out = *__first;
- ++__out;
- --__m;
- }
- --__remaining;
- ++__first;
- }
- return __out;
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _ForwardIterator, typename _OutputIterator,
- typename _Distance, typename _RandomNumberGenerator>
- _OutputIterator
- random_sample_n(_ForwardIterator __first, _ForwardIterator __last,
- _OutputIterator __out, const _Distance __n,
- _RandomNumberGenerator& __rand)
- {
- // concept requirements
- __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
- __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
- typename iterator_traits<_ForwardIterator>::value_type>)
- __glibcxx_function_requires(_UnaryFunctionConcept<
- _RandomNumberGenerator, _Distance, _Distance>)
- __glibcxx_requires_valid_range(__first, __last);
-
- _Distance __remaining = std::distance(__first, __last);
- _Distance __m = min(__n, __remaining);
-
- while (__m > 0)
- {
- if (__rand(__remaining) < __m)
- {
- *__out = *__first;
- ++__out;
- --__m;
- }
- --__remaining;
- ++__first;
- }
- return __out;
- }
-
- template<typename _InputIterator, typename _RandomAccessIterator,
- typename _Distance>
- _RandomAccessIterator
- __random_sample(_InputIterator __first, _InputIterator __last,
- _RandomAccessIterator __out,
- const _Distance __n)
- {
- _Distance __m = 0;
- _Distance __t = __n;
- for ( ; __first != __last && __m < __n; ++__m, ++__first)
- __out[__m] = *__first;
-
- while (__first != __last)
- {
- ++__t;
- _Distance __M = std::rand() % (__t);
- if (__M < __n)
- __out[__M] = *__first;
- ++__first;
- }
- return __out + __m;
- }
-
- template<typename _InputIterator, typename _RandomAccessIterator,
- typename _RandomNumberGenerator, typename _Distance>
- _RandomAccessIterator
- __random_sample(_InputIterator __first, _InputIterator __last,
- _RandomAccessIterator __out,
- _RandomNumberGenerator& __rand,
- const _Distance __n)
- {
- // concept requirements
- __glibcxx_function_requires(_UnaryFunctionConcept<
- _RandomNumberGenerator, _Distance, _Distance>)
-
- _Distance __m = 0;
- _Distance __t = __n;
- for ( ; __first != __last && __m < __n; ++__m, ++__first)
- __out[__m] = *__first;
-
- while (__first != __last)
- {
- ++__t;
- _Distance __M = __rand(__t);
- if (__M < __n)
- __out[__M] = *__first;
- ++__first;
- }
- return __out + __m;
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _InputIterator, typename _RandomAccessIterator>
- inline _RandomAccessIterator
- random_sample(_InputIterator __first, _InputIterator __last,
- _RandomAccessIterator __out_first,
- _RandomAccessIterator __out_last)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
- _RandomAccessIterator>)
- __glibcxx_requires_valid_range(__first, __last);
- __glibcxx_requires_valid_range(__out_first, __out_last);
-
- return __random_sample(__first, __last,
- __out_first, __out_last - __out_first);
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _InputIterator, typename _RandomAccessIterator,
- typename _RandomNumberGenerator>
- inline _RandomAccessIterator
- random_sample(_InputIterator __first, _InputIterator __last,
- _RandomAccessIterator __out_first,
- _RandomAccessIterator __out_last,
- _RandomNumberGenerator& __rand)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- __glibcxx_function_requires(_Mutable_RandomAccessIteratorConcept<
- _RandomAccessIterator>)
- __glibcxx_requires_valid_range(__first, __last);
- __glibcxx_requires_valid_range(__out_first, __out_last);
-
- return __random_sample(__first, __last,
- __out_first, __rand,
- __out_last - __out_first);
- }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- using std::is_heap;
-#else
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _RandomAccessIterator>
- inline bool
- is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last)
- {
- // concept requirements
- __glibcxx_function_requires(_RandomAccessIteratorConcept<
- _RandomAccessIterator>)
- __glibcxx_function_requires(_LessThanComparableConcept<
- typename iterator_traits<_RandomAccessIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- return std::__is_heap(__first, __last - __first);
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _RandomAccessIterator, typename _StrictWeakOrdering>
- inline bool
- is_heap(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _StrictWeakOrdering __comp)
- {
- // concept requirements
- __glibcxx_function_requires(_RandomAccessIteratorConcept<
- _RandomAccessIterator>)
- __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
- typename iterator_traits<_RandomAccessIterator>::value_type,
- typename iterator_traits<_RandomAccessIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- return std::__is_heap(__first, __comp, __last - __first);
- }
-#endif
-
- // is_sorted, a predicated testing whether a range is sorted in
- // nondescending order. This is an extension, not part of the C++
- // standard.
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _ForwardIterator>
- bool
- is_sorted(_ForwardIterator __first, _ForwardIterator __last)
- {
- // concept requirements
- __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
- __glibcxx_function_requires(_LessThanComparableConcept<
- typename iterator_traits<_ForwardIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- if (__first == __last)
- return true;
-
- _ForwardIterator __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next)
- if (*__next < *__first)
- return false;
- return true;
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _ForwardIterator, typename _StrictWeakOrdering>
- bool
- is_sorted(_ForwardIterator __first, _ForwardIterator __last,
- _StrictWeakOrdering __comp)
- {
- // concept requirements
- __glibcxx_function_requires(_ForwardIteratorConcept<_ForwardIterator>)
- __glibcxx_function_requires(_BinaryPredicateConcept<_StrictWeakOrdering,
- typename iterator_traits<_ForwardIterator>::value_type,
- typename iterator_traits<_ForwardIterator>::value_type>)
- __glibcxx_requires_valid_range(__first, __last);
-
- if (__first == __last)
- return true;
-
- _ForwardIterator __next = __first;
- for (++__next; __next != __last; __first = __next, ++__next)
- if (__comp(*__next, *__first))
- return false;
- return true;
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _EXT_ALGORITHM */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/array_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/array_allocator.h
deleted file mode 100644
index f36f273d1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/array_allocator.h
+++ /dev/null
@@ -1,154 +0,0 @@
-// array allocator -*- C++ -*-
-
-// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/array_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _ARRAY_ALLOCATOR_H
-#define _ARRAY_ALLOCATOR_H 1
-
-#include <cstddef>
-#include <new>
-#include <bits/functexcept.h>
-#include <tr1/array>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- /// Base class.
- template<typename _Tp>
- class array_allocator_base
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- void
- deallocate(pointer, size_type)
- {
- // Does nothing.
- }
-
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 402. wrong new expression in [some_] allocator::construct
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) value_type(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
-
- /**
- * @brief An allocator that uses previously allocated memory.
- * This memory can be externally, globally, or otherwise allocated.
- * @ingroup allocators
- */
- template<typename _Tp, typename _Array = std::tr1::array<_Tp, 1> >
- class array_allocator : public array_allocator_base<_Tp>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- typedef _Array array_type;
-
- private:
- array_type* _M_array;
- size_type _M_used;
-
- public:
- template<typename _Tp1, typename _Array1 = _Array>
- struct rebind
- { typedef array_allocator<_Tp1, _Array1> other; };
-
- array_allocator(array_type* __array = NULL) throw()
- : _M_array(__array), _M_used(size_type()) { }
-
- array_allocator(const array_allocator& __o) throw()
- : _M_array(__o._M_array), _M_used(__o._M_used) { }
-
- template<typename _Tp1, typename _Array1>
- array_allocator(const array_allocator<_Tp1, _Array1>&) throw()
- : _M_array(NULL), _M_used(size_type()) { }
-
- ~array_allocator() throw() { }
-
- pointer
- allocate(size_type __n, const void* = 0)
- {
- if (_M_array == 0 || _M_used + __n > _M_array->size())
- std::__throw_bad_alloc();
- pointer __ret = _M_array->begin() + _M_used;
- _M_used += __n;
- return __ret;
- }
- };
-
- template<typename _Tp, typename _Array>
- inline bool
- operator==(const array_allocator<_Tp, _Array>&,
- const array_allocator<_Tp, _Array>&)
- { return true; }
-
- template<typename _Tp, typename _Array>
- inline bool
- operator!=(const array_allocator<_Tp, _Array>&,
- const array_allocator<_Tp, _Array>&)
- { return false; }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/atomicity.h b/gcc-4.4.3/libstdc++-v3/include/ext/atomicity.h
deleted file mode 100644
index bb891e8af..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/atomicity.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// Support for atomic operations -*- C++ -*-
-
-// Copyright (C) 2004, 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file atomicity.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _GLIBCXX_ATOMICITY_H
-#define _GLIBCXX_ATOMICITY_H 1
-
-#include <bits/c++config.h>
-#include <bits/gthr.h>
-#include <bits/atomic_word.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Functions for portable atomic access.
- // To abstract locking primitives across all thread policies, use:
- // __exchange_and_add_dispatch
- // __atomic_add_dispatch
-#ifdef _GLIBCXX_ATOMIC_BUILTINS_4
- static inline _Atomic_word
- __exchange_and_add(volatile _Atomic_word* __mem, int __val)
- { return __sync_fetch_and_add(__mem, __val); }
-
- static inline void
- __atomic_add(volatile _Atomic_word* __mem, int __val)
- { __sync_fetch_and_add(__mem, __val); }
-#else
- _Atomic_word
- __attribute__ ((__unused__))
- __exchange_and_add(volatile _Atomic_word*, int);
-
- void
- __attribute__ ((__unused__))
- __atomic_add(volatile _Atomic_word*, int);
-#endif
-
- static inline _Atomic_word
- __exchange_and_add_single(_Atomic_word* __mem, int __val)
- {
- _Atomic_word __result = *__mem;
- *__mem += __val;
- return __result;
- }
-
- static inline void
- __atomic_add_single(_Atomic_word* __mem, int __val)
- { *__mem += __val; }
-
- static inline _Atomic_word
- __attribute__ ((__unused__))
- __exchange_and_add_dispatch(_Atomic_word* __mem, int __val)
- {
-#ifdef __GTHREADS
- if (__gthread_active_p())
- return __exchange_and_add(__mem, __val);
- else
- return __exchange_and_add_single(__mem, __val);
-#else
- return __exchange_and_add_single(__mem, __val);
-#endif
- }
-
- static inline void
- __attribute__ ((__unused__))
- __atomic_add_dispatch(_Atomic_word* __mem, int __val)
- {
-#ifdef __GTHREADS
- if (__gthread_active_p())
- __atomic_add(__mem, __val);
- else
- __atomic_add_single(__mem, __val);
-#else
- __atomic_add_single(__mem, __val);
-#endif
- }
-
-_GLIBCXX_END_NAMESPACE
-
-// Even if the CPU doesn't need a memory barrier, we need to ensure
-// that the compiler doesn't reorder memory accesses across the
-// barriers.
-#ifndef _GLIBCXX_READ_MEM_BARRIER
-#define _GLIBCXX_READ_MEM_BARRIER __asm __volatile ("":::"memory")
-#endif
-#ifndef _GLIBCXX_WRITE_MEM_BARRIER
-#define _GLIBCXX_WRITE_MEM_BARRIER __asm __volatile ("":::"memory")
-#endif
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/bitmap_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/bitmap_allocator.h
deleted file mode 100644
index 3ad08fbef..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/bitmap_allocator.h
+++ /dev/null
@@ -1,1145 +0,0 @@
-// Bitmap Allocator. -*- C++ -*-
-
-// Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/bitmap_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _BITMAP_ALLOCATOR_H
-#define _BITMAP_ALLOCATOR_H 1
-
-#include <cstddef> // For std::size_t, and ptrdiff_t.
-#include <bits/functexcept.h> // For __throw_bad_alloc().
-#include <utility> // For std::pair.
-#include <functional> // For greater_equal, and less_equal.
-#include <new> // For operator new.
-#include <debug/debug.h> // _GLIBCXX_DEBUG_ASSERT
-#include <ext/concurrence.h>
-#include <bits/move.h>
-
-/** @brief The constant in the expression below is the alignment
- * required in bytes.
- */
-#define _BALLOC_ALIGN_BYTES 8
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- namespace __detail
- {
- /** @class __mini_vector bitmap_allocator.h bitmap_allocator.h
- *
- * @brief __mini_vector<> is a stripped down version of the
- * full-fledged std::vector<>.
- *
- * It is to be used only for built-in types or PODs. Notable
- * differences are:
- *
- * @detail
- * 1. Not all accessor functions are present.
- * 2. Used ONLY for PODs.
- * 3. No Allocator template argument. Uses ::operator new() to get
- * memory, and ::operator delete() to free it.
- * Caveat: The dtor does NOT free the memory allocated, so this a
- * memory-leaking vector!
- */
- template<typename _Tp>
- class __mini_vector
- {
- __mini_vector(const __mini_vector&);
- __mini_vector& operator=(const __mini_vector&);
-
- public:
- typedef _Tp value_type;
- typedef _Tp* pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef pointer iterator;
-
- private:
- pointer _M_start;
- pointer _M_finish;
- pointer _M_end_of_storage;
-
- size_type
- _M_space_left() const throw()
- { return _M_end_of_storage - _M_finish; }
-
- pointer
- allocate(size_type __n)
- { return static_cast<pointer>(::operator new(__n * sizeof(_Tp))); }
-
- void
- deallocate(pointer __p, size_type)
- { ::operator delete(__p); }
-
- public:
- // Members used: size(), push_back(), pop_back(),
- // insert(iterator, const_reference), erase(iterator),
- // begin(), end(), back(), operator[].
-
- __mini_vector() : _M_start(0), _M_finish(0),
- _M_end_of_storage(0)
- { }
-
-#if 0
- ~__mini_vector()
- {
- if (this->_M_start)
- {
- this->deallocate(this->_M_start, this->_M_end_of_storage
- - this->_M_start);
- }
- }
-#endif
-
- size_type
- size() const throw()
- { return _M_finish - _M_start; }
-
- iterator
- begin() const throw()
- { return this->_M_start; }
-
- iterator
- end() const throw()
- { return this->_M_finish; }
-
- reference
- back() const throw()
- { return *(this->end() - 1); }
-
- reference
- operator[](const size_type __pos) const throw()
- { return this->_M_start[__pos]; }
-
- void
- insert(iterator __pos, const_reference __x);
-
- void
- push_back(const_reference __x)
- {
- if (this->_M_space_left())
- {
- *this->end() = __x;
- ++this->_M_finish;
- }
- else
- this->insert(this->end(), __x);
- }
-
- void
- pop_back() throw()
- { --this->_M_finish; }
-
- void
- erase(iterator __pos) throw();
-
- void
- clear() throw()
- { this->_M_finish = this->_M_start; }
- };
-
- // Out of line function definitions.
- template<typename _Tp>
- void __mini_vector<_Tp>::
- insert(iterator __pos, const_reference __x)
- {
- if (this->_M_space_left())
- {
- size_type __to_move = this->_M_finish - __pos;
- iterator __dest = this->end();
- iterator __src = this->end() - 1;
-
- ++this->_M_finish;
- while (__to_move)
- {
- *__dest = *__src;
- --__dest; --__src; --__to_move;
- }
- *__pos = __x;
- }
- else
- {
- size_type __new_size = this->size() ? this->size() * 2 : 1;
- iterator __new_start = this->allocate(__new_size);
- iterator __first = this->begin();
- iterator __start = __new_start;
- while (__first != __pos)
- {
- *__start = *__first;
- ++__start; ++__first;
- }
- *__start = __x;
- ++__start;
- while (__first != this->end())
- {
- *__start = *__first;
- ++__start; ++__first;
- }
- if (this->_M_start)
- this->deallocate(this->_M_start, this->size());
-
- this->_M_start = __new_start;
- this->_M_finish = __start;
- this->_M_end_of_storage = this->_M_start + __new_size;
- }
- }
-
- template<typename _Tp>
- void __mini_vector<_Tp>::
- erase(iterator __pos) throw()
- {
- while (__pos + 1 != this->end())
- {
- *__pos = __pos[1];
- ++__pos;
- }
- --this->_M_finish;
- }
-
-
- template<typename _Tp>
- struct __mv_iter_traits
- {
- typedef typename _Tp::value_type value_type;
- typedef typename _Tp::difference_type difference_type;
- };
-
- template<typename _Tp>
- struct __mv_iter_traits<_Tp*>
- {
- typedef _Tp value_type;
- typedef ptrdiff_t difference_type;
- };
-
- enum
- {
- bits_per_byte = 8,
- bits_per_block = sizeof(size_t) * size_t(bits_per_byte)
- };
-
- template<typename _ForwardIterator, typename _Tp, typename _Compare>
- _ForwardIterator
- __lower_bound(_ForwardIterator __first, _ForwardIterator __last,
- const _Tp& __val, _Compare __comp)
- {
- typedef typename __mv_iter_traits<_ForwardIterator>::value_type
- _ValueType;
- typedef typename __mv_iter_traits<_ForwardIterator>::difference_type
- _DistanceType;
-
- _DistanceType __len = __last - __first;
- _DistanceType __half;
- _ForwardIterator __middle;
-
- while (__len > 0)
- {
- __half = __len >> 1;
- __middle = __first;
- __middle += __half;
- if (__comp(*__middle, __val))
- {
- __first = __middle;
- ++__first;
- __len = __len - __half - 1;
- }
- else
- __len = __half;
- }
- return __first;
- }
-
- template<typename _InputIterator, typename _Predicate>
- inline _InputIterator
- __find_if(_InputIterator __first, _InputIterator __last, _Predicate __p)
- {
- while (__first != __last && !__p(*__first))
- ++__first;
- return __first;
- }
-
- /** @brief The number of Blocks pointed to by the address pair
- * passed to the function.
- */
- template<typename _AddrPair>
- inline size_t
- __num_blocks(_AddrPair __ap)
- { return (__ap.second - __ap.first) + 1; }
-
- /** @brief The number of Bit-maps pointed to by the address pair
- * passed to the function.
- */
- template<typename _AddrPair>
- inline size_t
- __num_bitmaps(_AddrPair __ap)
- { return __num_blocks(__ap) / size_t(bits_per_block); }
-
- // _Tp should be a pointer type.
- template<typename _Tp>
- class _Inclusive_between
- : public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
- {
- typedef _Tp pointer;
- pointer _M_ptr_value;
- typedef typename std::pair<_Tp, _Tp> _Block_pair;
-
- public:
- _Inclusive_between(pointer __ptr) : _M_ptr_value(__ptr)
- { }
-
- bool
- operator()(_Block_pair __bp) const throw()
- {
- if (std::less_equal<pointer>()(_M_ptr_value, __bp.second)
- && std::greater_equal<pointer>()(_M_ptr_value, __bp.first))
- return true;
- else
- return false;
- }
- };
-
- // Used to pass a Functor to functions by reference.
- template<typename _Functor>
- class _Functor_Ref
- : public std::unary_function<typename _Functor::argument_type,
- typename _Functor::result_type>
- {
- _Functor& _M_fref;
-
- public:
- typedef typename _Functor::argument_type argument_type;
- typedef typename _Functor::result_type result_type;
-
- _Functor_Ref(_Functor& __fref) : _M_fref(__fref)
- { }
-
- result_type
- operator()(argument_type __arg)
- { return _M_fref(__arg); }
- };
-
- /** @class _Ffit_finder bitmap_allocator.h bitmap_allocator.h
- *
- * @brief The class which acts as a predicate for applying the
- * first-fit memory allocation policy for the bitmap allocator.
- */
- // _Tp should be a pointer type, and _Alloc is the Allocator for
- // the vector.
- template<typename _Tp>
- class _Ffit_finder
- : public std::unary_function<typename std::pair<_Tp, _Tp>, bool>
- {
- typedef typename std::pair<_Tp, _Tp> _Block_pair;
- typedef typename __detail::__mini_vector<_Block_pair> _BPVector;
- typedef typename _BPVector::difference_type _Counter_type;
-
- size_t* _M_pbitmap;
- _Counter_type _M_data_offset;
-
- public:
- _Ffit_finder() : _M_pbitmap(0), _M_data_offset(0)
- { }
-
- bool
- operator()(_Block_pair __bp) throw()
- {
- // Set the _rover to the last physical location bitmap,
- // which is the bitmap which belongs to the first free
- // block. Thus, the bitmaps are in exact reverse order of
- // the actual memory layout. So, we count down the bitmaps,
- // which is the same as moving up the memory.
-
- // If the used count stored at the start of the Bit Map headers
- // is equal to the number of Objects that the current Block can
- // store, then there is definitely no space for another single
- // object, so just return false.
- _Counter_type __diff =
- __gnu_cxx::__detail::__num_bitmaps(__bp);
-
- if (*(reinterpret_cast<size_t*>
- (__bp.first) - (__diff + 1))
- == __gnu_cxx::__detail::__num_blocks(__bp))
- return false;
-
- size_t* __rover = reinterpret_cast<size_t*>(__bp.first) - 1;
-
- for (_Counter_type __i = 0; __i < __diff; ++__i)
- {
- _M_data_offset = __i;
- if (*__rover)
- {
- _M_pbitmap = __rover;
- return true;
- }
- --__rover;
- }
- return false;
- }
-
-
- size_t*
- _M_get() const throw()
- { return _M_pbitmap; }
-
- _Counter_type
- _M_offset() const throw()
- { return _M_data_offset * size_t(bits_per_block); }
- };
-
-
- /** @class _Bitmap_counter bitmap_allocator.h bitmap_allocator.h
- *
- * @brief The bitmap counter which acts as the bitmap
- * manipulator, and manages the bit-manipulation functions and
- * the searching and identification functions on the bit-map.
- */
- // _Tp should be a pointer type.
- template<typename _Tp>
- class _Bitmap_counter
- {
- typedef typename __detail::__mini_vector<typename std::pair<_Tp, _Tp> >
- _BPVector;
- typedef typename _BPVector::size_type _Index_type;
- typedef _Tp pointer;
-
- _BPVector& _M_vbp;
- size_t* _M_curr_bmap;
- size_t* _M_last_bmap_in_block;
- _Index_type _M_curr_index;
-
- public:
- // Use the 2nd parameter with care. Make sure that such an
- // entry exists in the vector before passing that particular
- // index to this ctor.
- _Bitmap_counter(_BPVector& Rvbp, long __index = -1) : _M_vbp(Rvbp)
- { this->_M_reset(__index); }
-
- void
- _M_reset(long __index = -1) throw()
- {
- if (__index == -1)
- {
- _M_curr_bmap = 0;
- _M_curr_index = static_cast<_Index_type>(-1);
- return;
- }
-
- _M_curr_index = __index;
- _M_curr_bmap = reinterpret_cast<size_t*>
- (_M_vbp[_M_curr_index].first) - 1;
-
- _GLIBCXX_DEBUG_ASSERT(__index <= (long)_M_vbp.size() - 1);
-
- _M_last_bmap_in_block = _M_curr_bmap
- - ((_M_vbp[_M_curr_index].second
- - _M_vbp[_M_curr_index].first + 1)
- / size_t(bits_per_block) - 1);
- }
-
- // Dangerous Function! Use with extreme care. Pass to this
- // function ONLY those values that are known to be correct,
- // otherwise this will mess up big time.
- void
- _M_set_internal_bitmap(size_t* __new_internal_marker) throw()
- { _M_curr_bmap = __new_internal_marker; }
-
- bool
- _M_finished() const throw()
- { return(_M_curr_bmap == 0); }
-
- _Bitmap_counter&
- operator++() throw()
- {
- if (_M_curr_bmap == _M_last_bmap_in_block)
- {
- if (++_M_curr_index == _M_vbp.size())
- _M_curr_bmap = 0;
- else
- this->_M_reset(_M_curr_index);
- }
- else
- --_M_curr_bmap;
- return *this;
- }
-
- size_t*
- _M_get() const throw()
- { return _M_curr_bmap; }
-
- pointer
- _M_base() const throw()
- { return _M_vbp[_M_curr_index].first; }
-
- _Index_type
- _M_offset() const throw()
- {
- return size_t(bits_per_block)
- * ((reinterpret_cast<size_t*>(this->_M_base())
- - _M_curr_bmap) - 1);
- }
-
- _Index_type
- _M_where() const throw()
- { return _M_curr_index; }
- };
-
- /** @brief Mark a memory address as allocated by re-setting the
- * corresponding bit in the bit-map.
- */
- inline void
- __bit_allocate(size_t* __pbmap, size_t __pos) throw()
- {
- size_t __mask = 1 << __pos;
- __mask = ~__mask;
- *__pbmap &= __mask;
- }
-
- /** @brief Mark a memory address as free by setting the
- * corresponding bit in the bit-map.
- */
- inline void
- __bit_free(size_t* __pbmap, size_t __pos) throw()
- {
- size_t __mask = 1 << __pos;
- *__pbmap |= __mask;
- }
- } // namespace __detail
-
- /** @brief Generic Version of the bsf instruction.
- */
- inline size_t
- _Bit_scan_forward(size_t __num)
- { return static_cast<size_t>(__builtin_ctzl(__num)); }
-
- /** @class free_list bitmap_allocator.h bitmap_allocator.h
- *
- * @brief The free list class for managing chunks of memory to be
- * given to and returned by the bitmap_allocator.
- */
- class free_list
- {
- typedef size_t* value_type;
- typedef __detail::__mini_vector<value_type> vector_type;
- typedef vector_type::iterator iterator;
- typedef __mutex __mutex_type;
-
- struct _LT_pointer_compare
- {
- bool
- operator()(const size_t* __pui,
- const size_t __cui) const throw()
- { return *__pui < __cui; }
- };
-
-#if defined __GTHREADS
- __mutex_type&
- _M_get_mutex()
- {
- static __mutex_type _S_mutex;
- return _S_mutex;
- }
-#endif
-
- vector_type&
- _M_get_free_list()
- {
- static vector_type _S_free_list;
- return _S_free_list;
- }
-
- /** @brief Performs validation of memory based on their size.
- *
- * @param __addr The pointer to the memory block to be
- * validated.
- *
- * @detail Validates the memory block passed to this function and
- * appropriately performs the action of managing the free list of
- * blocks by adding this block to the free list or deleting this
- * or larger blocks from the free list.
- */
- void
- _M_validate(size_t* __addr) throw()
- {
- vector_type& __free_list = _M_get_free_list();
- const vector_type::size_type __max_size = 64;
- if (__free_list.size() >= __max_size)
- {
- // Ok, the threshold value has been reached. We determine
- // which block to remove from the list of free blocks.
- if (*__addr >= *__free_list.back())
- {
- // Ok, the new block is greater than or equal to the
- // last block in the list of free blocks. We just free
- // the new block.
- ::operator delete(static_cast<void*>(__addr));
- return;
- }
- else
- {
- // Deallocate the last block in the list of free lists,
- // and insert the new one in its correct position.
- ::operator delete(static_cast<void*>(__free_list.back()));
- __free_list.pop_back();
- }
- }
-
- // Just add the block to the list of free lists unconditionally.
- iterator __temp = __gnu_cxx::__detail::__lower_bound
- (__free_list.begin(), __free_list.end(),
- *__addr, _LT_pointer_compare());
-
- // We may insert the new free list before _temp;
- __free_list.insert(__temp, __addr);
- }
-
- /** @brief Decides whether the wastage of memory is acceptable for
- * the current memory request and returns accordingly.
- *
- * @param __block_size The size of the block available in the free
- * list.
- *
- * @param __required_size The required size of the memory block.
- *
- * @return true if the wastage incurred is acceptable, else returns
- * false.
- */
- bool
- _M_should_i_give(size_t __block_size,
- size_t __required_size) throw()
- {
- const size_t __max_wastage_percentage = 36;
- if (__block_size >= __required_size &&
- (((__block_size - __required_size) * 100 / __block_size)
- < __max_wastage_percentage))
- return true;
- else
- return false;
- }
-
- public:
- /** @brief This function returns the block of memory to the
- * internal free list.
- *
- * @param __addr The pointer to the memory block that was given
- * by a call to the _M_get function.
- */
- inline void
- _M_insert(size_t* __addr) throw()
- {
-#if defined __GTHREADS
- __gnu_cxx::__scoped_lock __bfl_lock(_M_get_mutex());
-#endif
- // Call _M_validate to decide what should be done with
- // this particular free list.
- this->_M_validate(reinterpret_cast<size_t*>(__addr) - 1);
- // See discussion as to why this is 1!
- }
-
- /** @brief This function gets a block of memory of the specified
- * size from the free list.
- *
- * @param __sz The size in bytes of the memory required.
- *
- * @return A pointer to the new memory block of size at least
- * equal to that requested.
- */
- size_t*
- _M_get(size_t __sz) throw(std::bad_alloc);
-
- /** @brief This function just clears the internal Free List, and
- * gives back all the memory to the OS.
- */
- void
- _M_clear();
- };
-
-
- // Forward declare the class.
- template<typename _Tp>
- class bitmap_allocator;
-
- // Specialize for void:
- template<>
- class bitmap_allocator<void>
- {
- public:
- typedef void* pointer;
- typedef const void* const_pointer;
-
- // Reference-to-void members are impossible.
- typedef void value_type;
- template<typename _Tp1>
- struct rebind
- {
- typedef bitmap_allocator<_Tp1> other;
- };
- };
-
- /**
- * @brief Bitmap Allocator, primary template.
- * @ingroup allocators
- */
- template<typename _Tp>
- class bitmap_allocator : private free_list
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- typedef free_list::__mutex_type __mutex_type;
-
- template<typename _Tp1>
- struct rebind
- {
- typedef bitmap_allocator<_Tp1> other;
- };
-
- private:
- template<size_t _BSize, size_t _AlignSize>
- struct aligned_size
- {
- enum
- {
- modulus = _BSize % _AlignSize,
- value = _BSize + (modulus ? _AlignSize - (modulus) : 0)
- };
- };
-
- struct _Alloc_block
- {
- char __M_unused[aligned_size<sizeof(value_type),
- _BALLOC_ALIGN_BYTES>::value];
- };
-
-
- typedef typename std::pair<_Alloc_block*, _Alloc_block*> _Block_pair;
-
- typedef typename
- __detail::__mini_vector<_Block_pair> _BPVector;
-
-#if defined _GLIBCXX_DEBUG
- // Complexity: O(lg(N)). Where, N is the number of block of size
- // sizeof(value_type).
- void
- _S_check_for_free_blocks() throw()
- {
- typedef typename
- __gnu_cxx::__detail::_Ffit_finder<_Alloc_block*> _FFF;
- _FFF __fff;
- typedef typename _BPVector::iterator _BPiter;
- _BPiter __bpi =
- __gnu_cxx::__detail::__find_if
- (_S_mem_blocks.begin(), _S_mem_blocks.end(),
- __gnu_cxx::__detail::_Functor_Ref<_FFF>(__fff));
-
- _GLIBCXX_DEBUG_ASSERT(__bpi == _S_mem_blocks.end());
- }
-#endif
-
- /** @brief Responsible for exponentially growing the internal
- * memory pool.
- *
- * @throw std::bad_alloc. If memory can not be allocated.
- *
- * @detail Complexity: O(1), but internally depends upon the
- * complexity of the function free_list::_M_get. The part where
- * the bitmap headers are written has complexity: O(X),where X
- * is the number of blocks of size sizeof(value_type) within
- * the newly acquired block. Having a tight bound.
- */
- void
- _S_refill_pool() throw(std::bad_alloc)
- {
-#if defined _GLIBCXX_DEBUG
- _S_check_for_free_blocks();
-#endif
-
- const size_t __num_bitmaps = (_S_block_size
- / size_t(__detail::bits_per_block));
- const size_t __size_to_allocate = sizeof(size_t)
- + _S_block_size * sizeof(_Alloc_block)
- + __num_bitmaps * sizeof(size_t);
-
- size_t* __temp =
- reinterpret_cast<size_t*>
- (this->_M_get(__size_to_allocate));
- *__temp = 0;
- ++__temp;
-
- // The Header information goes at the Beginning of the Block.
- _Block_pair __bp =
- std::make_pair(reinterpret_cast<_Alloc_block*>
- (__temp + __num_bitmaps),
- reinterpret_cast<_Alloc_block*>
- (__temp + __num_bitmaps)
- + _S_block_size - 1);
-
- // Fill the Vector with this information.
- _S_mem_blocks.push_back(__bp);
-
- size_t __bit_mask = 0; // 0 Indicates all Allocated.
- __bit_mask = ~__bit_mask; // 1 Indicates all Free.
-
- for (size_t __i = 0; __i < __num_bitmaps; ++__i)
- __temp[__i] = __bit_mask;
-
- _S_block_size *= 2;
- }
-
-
- static _BPVector _S_mem_blocks;
- static size_t _S_block_size;
- static __gnu_cxx::__detail::
- _Bitmap_counter<_Alloc_block*> _S_last_request;
- static typename _BPVector::size_type _S_last_dealloc_index;
-#if defined __GTHREADS
- static __mutex_type _S_mut;
-#endif
-
- public:
-
- /** @brief Allocates memory for a single object of size
- * sizeof(_Tp).
- *
- * @throw std::bad_alloc. If memory can not be allocated.
- *
- * @detail Complexity: Worst case complexity is O(N), but that
- * is hardly ever hit. If and when this particular case is
- * encountered, the next few cases are guaranteed to have a
- * worst case complexity of O(1)! That's why this function
- * performs very well on average. You can consider this
- * function to have a complexity referred to commonly as:
- * Amortized Constant time.
- */
- pointer
- _M_allocate_single_object() throw(std::bad_alloc)
- {
-#if defined __GTHREADS
- __gnu_cxx::__scoped_lock __bit_lock(_S_mut);
-#endif
-
- // The algorithm is something like this: The last_request
- // variable points to the last accessed Bit Map. When such a
- // condition occurs, we try to find a free block in the
- // current bitmap, or succeeding bitmaps until the last bitmap
- // is reached. If no free block turns up, we resort to First
- // Fit method.
-
- // WARNING: Do not re-order the condition in the while
- // statement below, because it relies on C++'s short-circuit
- // evaluation. The return from _S_last_request->_M_get() will
- // NOT be dereference able if _S_last_request->_M_finished()
- // returns true. This would inevitably lead to a NULL pointer
- // dereference if tinkered with.
- while (_S_last_request._M_finished() == false
- && (*(_S_last_request._M_get()) == 0))
- {
- _S_last_request.operator++();
- }
-
- if (__builtin_expect(_S_last_request._M_finished() == true, false))
- {
- // Fall Back to First Fit algorithm.
- typedef typename
- __gnu_cxx::__detail::_Ffit_finder<_Alloc_block*> _FFF;
- _FFF __fff;
- typedef typename _BPVector::iterator _BPiter;
- _BPiter __bpi =
- __gnu_cxx::__detail::__find_if
- (_S_mem_blocks.begin(), _S_mem_blocks.end(),
- __gnu_cxx::__detail::_Functor_Ref<_FFF>(__fff));
-
- if (__bpi != _S_mem_blocks.end())
- {
- // Search was successful. Ok, now mark the first bit from
- // the right as 0, meaning Allocated. This bit is obtained
- // by calling _M_get() on __fff.
- size_t __nz_bit = _Bit_scan_forward(*__fff._M_get());
- __detail::__bit_allocate(__fff._M_get(), __nz_bit);
-
- _S_last_request._M_reset(__bpi - _S_mem_blocks.begin());
-
- // Now, get the address of the bit we marked as allocated.
- pointer __ret = reinterpret_cast<pointer>
- (__bpi->first + __fff._M_offset() + __nz_bit);
- size_t* __puse_count =
- reinterpret_cast<size_t*>
- (__bpi->first)
- - (__gnu_cxx::__detail::__num_bitmaps(*__bpi) + 1);
-
- ++(*__puse_count);
- return __ret;
- }
- else
- {
- // Search was unsuccessful. We Add more memory to the
- // pool by calling _S_refill_pool().
- _S_refill_pool();
-
- // _M_Reset the _S_last_request structure to the first
- // free block's bit map.
- _S_last_request._M_reset(_S_mem_blocks.size() - 1);
-
- // Now, mark that bit as allocated.
- }
- }
-
- // _S_last_request holds a pointer to a valid bit map, that
- // points to a free block in memory.
- size_t __nz_bit = _Bit_scan_forward(*_S_last_request._M_get());
- __detail::__bit_allocate(_S_last_request._M_get(), __nz_bit);
-
- pointer __ret = reinterpret_cast<pointer>
- (_S_last_request._M_base() + _S_last_request._M_offset() + __nz_bit);
-
- size_t* __puse_count = reinterpret_cast<size_t*>
- (_S_mem_blocks[_S_last_request._M_where()].first)
- - (__gnu_cxx::__detail::
- __num_bitmaps(_S_mem_blocks[_S_last_request._M_where()]) + 1);
-
- ++(*__puse_count);
- return __ret;
- }
-
- /** @brief Deallocates memory that belongs to a single object of
- * size sizeof(_Tp).
- *
- * @detail Complexity: O(lg(N)), but the worst case is not hit
- * often! This is because containers usually deallocate memory
- * close to each other and this case is handled in O(1) time by
- * the deallocate function.
- */
- void
- _M_deallocate_single_object(pointer __p) throw()
- {
-#if defined __GTHREADS
- __gnu_cxx::__scoped_lock __bit_lock(_S_mut);
-#endif
- _Alloc_block* __real_p = reinterpret_cast<_Alloc_block*>(__p);
-
- typedef typename _BPVector::iterator _Iterator;
- typedef typename _BPVector::difference_type _Difference_type;
-
- _Difference_type __diff;
- long __displacement;
-
- _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0);
-
-
- if (__gnu_cxx::__detail::_Inclusive_between<_Alloc_block*>
- (__real_p) (_S_mem_blocks[_S_last_dealloc_index]))
- {
- _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index
- <= _S_mem_blocks.size() - 1);
-
- // Initial Assumption was correct!
- __diff = _S_last_dealloc_index;
- __displacement = __real_p - _S_mem_blocks[__diff].first;
- }
- else
- {
- _Iterator _iter = __gnu_cxx::__detail::
- __find_if(_S_mem_blocks.begin(),
- _S_mem_blocks.end(),
- __gnu_cxx::__detail::
- _Inclusive_between<_Alloc_block*>(__real_p));
-
- _GLIBCXX_DEBUG_ASSERT(_iter != _S_mem_blocks.end());
-
- __diff = _iter - _S_mem_blocks.begin();
- __displacement = __real_p - _S_mem_blocks[__diff].first;
- _S_last_dealloc_index = __diff;
- }
-
- // Get the position of the iterator that has been found.
- const size_t __rotate = (__displacement
- % size_t(__detail::bits_per_block));
- size_t* __bitmapC =
- reinterpret_cast<size_t*>
- (_S_mem_blocks[__diff].first) - 1;
- __bitmapC -= (__displacement / size_t(__detail::bits_per_block));
-
- __detail::__bit_free(__bitmapC, __rotate);
- size_t* __puse_count = reinterpret_cast<size_t*>
- (_S_mem_blocks[__diff].first)
- - (__gnu_cxx::__detail::__num_bitmaps(_S_mem_blocks[__diff]) + 1);
-
- _GLIBCXX_DEBUG_ASSERT(*__puse_count != 0);
-
- --(*__puse_count);
-
- if (__builtin_expect(*__puse_count == 0, false))
- {
- _S_block_size /= 2;
-
- // We can safely remove this block.
- // _Block_pair __bp = _S_mem_blocks[__diff];
- this->_M_insert(__puse_count);
- _S_mem_blocks.erase(_S_mem_blocks.begin() + __diff);
-
- // Reset the _S_last_request variable to reflect the
- // erased block. We do this to protect future requests
- // after the last block has been removed from a particular
- // memory Chunk, which in turn has been returned to the
- // free list, and hence had been erased from the vector,
- // so the size of the vector gets reduced by 1.
- if ((_Difference_type)_S_last_request._M_where() >= __diff--)
- _S_last_request._M_reset(__diff);
-
- // If the Index into the vector of the region of memory
- // that might hold the next address that will be passed to
- // deallocated may have been invalidated due to the above
- // erase procedure being called on the vector, hence we
- // try to restore this invariant too.
- if (_S_last_dealloc_index >= _S_mem_blocks.size())
- {
- _S_last_dealloc_index =(__diff != -1 ? __diff : 0);
- _GLIBCXX_DEBUG_ASSERT(_S_last_dealloc_index >= 0);
- }
- }
- }
-
- public:
- bitmap_allocator() throw()
- { }
-
- bitmap_allocator(const bitmap_allocator&)
- { }
-
- template<typename _Tp1>
- bitmap_allocator(const bitmap_allocator<_Tp1>&) throw()
- { }
-
- ~bitmap_allocator() throw()
- { }
-
- pointer
- allocate(size_type __n)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- if (__builtin_expect(__n == 1, true))
- return this->_M_allocate_single_object();
- else
- {
- const size_type __b = __n * sizeof(value_type);
- return reinterpret_cast<pointer>(::operator new(__b));
- }
- }
-
- pointer
- allocate(size_type __n, typename bitmap_allocator<void>::const_pointer)
- { return allocate(__n); }
-
- void
- deallocate(pointer __p, size_type __n) throw()
- {
- if (__builtin_expect(__p != 0, true))
- {
- if (__builtin_expect(__n == 1, true))
- this->_M_deallocate_single_object(__p);
- else
- ::operator delete(__p);
- }
- }
-
- pointer
- address(reference __r) const
- { return &__r; }
-
- const_pointer
- address(const_reference __r) const
- { return &__r; }
-
- size_type
- max_size() const throw()
- { return size_type(-1) / sizeof(value_type); }
-
- void
- construct(pointer __p, const_reference __data)
- { ::new((void *)__p) value_type(__data); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p)
- { __p->~value_type(); }
- };
-
- template<typename _Tp1, typename _Tp2>
- bool
- operator==(const bitmap_allocator<_Tp1>&,
- const bitmap_allocator<_Tp2>&) throw()
- { return true; }
-
- template<typename _Tp1, typename _Tp2>
- bool
- operator!=(const bitmap_allocator<_Tp1>&,
- const bitmap_allocator<_Tp2>&) throw()
- { return false; }
-
- // Static member definitions.
- template<typename _Tp>
- typename bitmap_allocator<_Tp>::_BPVector
- bitmap_allocator<_Tp>::_S_mem_blocks;
-
- template<typename _Tp>
- size_t bitmap_allocator<_Tp>::_S_block_size =
- 2 * size_t(__detail::bits_per_block);
-
- template<typename _Tp>
- typename __gnu_cxx::bitmap_allocator<_Tp>::_BPVector::size_type
- bitmap_allocator<_Tp>::_S_last_dealloc_index = 0;
-
- template<typename _Tp>
- __gnu_cxx::__detail::_Bitmap_counter
- <typename bitmap_allocator<_Tp>::_Alloc_block*>
- bitmap_allocator<_Tp>::_S_last_request(_S_mem_blocks);
-
-#if defined __GTHREADS
- template<typename _Tp>
- typename bitmap_allocator<_Tp>::__mutex_type
- bitmap_allocator<_Tp>::_S_mut;
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/cast.h b/gcc-4.4.3/libstdc++-v3/include/ext/cast.h
deleted file mode 100644
index 3ffad7c27..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/cast.h
+++ /dev/null
@@ -1,113 +0,0 @@
-// <cast.h> -*- C++ -*-
-
-// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-#ifndef _CAST_H
-#define _CAST_H 1
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx);
-
- /**
- * These functions are here to allow containers to support non standard
- * pointer types. For normal pointers, these resolve to the use of the
- * standard cast operation. For other types the functions will perform
- * the apprpriate cast to/from the custom pointer class so long as that
- * class meets the following conditions:
- * 1) has a typedef element_type which names tehe type it points to.
- * 2) has a get() const method which returns element_type*.
- * 3) has a constructor which can take one element_type* argument.
- */
-
- /**
- * This type supports the semantics of the pointer cast operators (below.)
- */
- template<typename _ToType>
- struct _Caster
- { typedef typename _ToType::element_type* type; };
-
- template<typename _ToType>
- struct _Caster<_ToType*>
- { typedef _ToType* type; };
-
- /**
- * Casting operations for cases where _FromType is not a standard pointer.
- * _ToType can be a standard or non-standard pointer. Given that _FromType
- * is not a pointer, it must have a get() method that returns the standard
- * pointer equivalent of the address it points to, and must have an
- * element_type typedef which names the type it points to.
- */
- template<typename _ToType, typename _FromType>
- inline _ToType
- __static_pointer_cast(const _FromType& __arg)
- { return _ToType(static_cast<typename _Caster<_ToType>::
- type>(__arg.get())); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __dynamic_pointer_cast(const _FromType& __arg)
- { return _ToType(dynamic_cast<typename _Caster<_ToType>::
- type>(__arg.get())); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __const_pointer_cast(const _FromType& __arg)
- { return _ToType(const_cast<typename _Caster<_ToType>::
- type>(__arg.get())); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __reinterpret_pointer_cast(const _FromType& __arg)
- { return _ToType(reinterpret_cast<typename _Caster<_ToType>::
- type>(__arg.get())); }
-
- /**
- * Casting operations for cases where _FromType is a standard pointer.
- * _ToType can be a standard or non-standard pointer.
- */
- template<typename _ToType, typename _FromType>
- inline _ToType
- __static_pointer_cast(_FromType* __arg)
- { return _ToType(static_cast<typename _Caster<_ToType>::
- type>(__arg)); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __dynamic_pointer_cast(_FromType* __arg)
- { return _ToType(dynamic_cast<typename _Caster<_ToType>::
- type>(__arg)); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __const_pointer_cast(_FromType* __arg)
- { return _ToType(const_cast<typename _Caster<_ToType>::
- type>(__arg)); }
-
- template<typename _ToType, typename _FromType>
- inline _ToType
- __reinterpret_pointer_cast(_FromType* __arg)
- { return _ToType(reinterpret_cast<typename _Caster<_ToType>::
- type>(__arg)); }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif // _CAST_H
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/codecvt_specializations.h b/gcc-4.4.3/libstdc++-v3/include/ext/codecvt_specializations.h
deleted file mode 100644
index 89adb3f20..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/codecvt_specializations.h
+++ /dev/null
@@ -1,507 +0,0 @@
-// Locale support (codecvt) -*- C++ -*-
-
-// Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-//
-// ISO C++ 14882: 22.2.1.5 Template class codecvt
-//
-
-// Written by Benjamin Kosnik <bkoz@redhat.com>
-
-/** @file ext/codecvt_specializations.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _EXT_CODECVT_SPECIALIZATIONS_H
-#define _EXT_CODECVT_SPECIALIZATIONS_H 1
-
-#include <bits/c++config.h>
-#include <locale>
-#include <iconv.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /// Extension to use iconv for dealing with character encodings.
- // This includes conversions and comparisons between various character
- // sets. This object encapsulates data that may need to be shared between
- // char_traits, codecvt and ctype.
- class encoding_state
- {
- public:
- // Types:
- // NB: A conversion descriptor subsumes and enhances the
- // functionality of a simple state type such as mbstate_t.
- typedef iconv_t descriptor_type;
-
- protected:
- // Name of internal character set encoding.
- std::string _M_int_enc;
-
- // Name of external character set encoding.
- std::string _M_ext_enc;
-
- // Conversion descriptor between external encoding to internal encoding.
- descriptor_type _M_in_desc;
-
- // Conversion descriptor between internal encoding to external encoding.
- descriptor_type _M_out_desc;
-
- // The byte-order marker for the external encoding, if necessary.
- int _M_ext_bom;
-
- // The byte-order marker for the internal encoding, if necessary.
- int _M_int_bom;
-
- // Number of external bytes needed to construct one complete
- // character in the internal encoding.
- // NB: -1 indicates variable, or stateful, encodings.
- int _M_bytes;
-
- public:
- explicit
- encoding_state()
- : _M_in_desc(0), _M_out_desc(0), _M_ext_bom(0), _M_int_bom(0), _M_bytes(0)
- { }
-
- explicit
- encoding_state(const char* __int, const char* __ext,
- int __ibom = 0, int __ebom = 0, int __bytes = 1)
- : _M_int_enc(__int), _M_ext_enc(__ext), _M_in_desc(0), _M_out_desc(0),
- _M_ext_bom(__ebom), _M_int_bom(__ibom), _M_bytes(__bytes)
- { init(); }
-
- // 21.1.2 traits typedefs
- // p4
- // typedef STATE_T state_type
- // requires: state_type shall meet the requirements of
- // CopyConstructible types (20.1.3)
- // NB: This does not preserve the actual state of the conversion
- // descriptor member, but it does duplicate the encoding
- // information.
- encoding_state(const encoding_state& __obj) : _M_in_desc(0), _M_out_desc(0)
- { construct(__obj); }
-
- // Need assignment operator as well.
- encoding_state&
- operator=(const encoding_state& __obj)
- {
- construct(__obj);
- return *this;
- }
-
- ~encoding_state()
- { destroy(); }
-
- bool
- good() const throw()
- {
- const descriptor_type __err = (iconv_t)(-1);
- bool __test = _M_in_desc && _M_in_desc != __err;
- __test &= _M_out_desc && _M_out_desc != __err;
- return __test;
- }
-
- int
- character_ratio() const
- { return _M_bytes; }
-
- const std::string
- internal_encoding() const
- { return _M_int_enc; }
-
- int
- internal_bom() const
- { return _M_int_bom; }
-
- const std::string
- external_encoding() const
- { return _M_ext_enc; }
-
- int
- external_bom() const
- { return _M_ext_bom; }
-
- const descriptor_type&
- in_descriptor() const
- { return _M_in_desc; }
-
- const descriptor_type&
- out_descriptor() const
- { return _M_out_desc; }
-
- protected:
- void
- init()
- {
- const descriptor_type __err = (iconv_t)(-1);
- const bool __have_encodings = _M_int_enc.size() && _M_ext_enc.size();
- if (!_M_in_desc && __have_encodings)
- {
- _M_in_desc = iconv_open(_M_int_enc.c_str(), _M_ext_enc.c_str());
- if (_M_in_desc == __err)
- std::__throw_runtime_error(__N("encoding_state::_M_init "
- "creating iconv input descriptor failed"));
- }
- if (!_M_out_desc && __have_encodings)
- {
- _M_out_desc = iconv_open(_M_ext_enc.c_str(), _M_int_enc.c_str());
- if (_M_out_desc == __err)
- std::__throw_runtime_error(__N("encoding_state::_M_init "
- "creating iconv output descriptor failed"));
- }
- }
-
- void
- construct(const encoding_state& __obj)
- {
- destroy();
- _M_int_enc = __obj._M_int_enc;
- _M_ext_enc = __obj._M_ext_enc;
- _M_ext_bom = __obj._M_ext_bom;
- _M_int_bom = __obj._M_int_bom;
- _M_bytes = __obj._M_bytes;
- init();
- }
-
- void
- destroy() throw()
- {
- const descriptor_type __err = (iconv_t)(-1);
- if (_M_in_desc && _M_in_desc != __err)
- {
- iconv_close(_M_in_desc);
- _M_in_desc = 0;
- }
- if (_M_out_desc && _M_out_desc != __err)
- {
- iconv_close(_M_out_desc);
- _M_out_desc = 0;
- }
- }
- };
-
- /// encoding_char_traits
- // Custom traits type with encoding_state for the state type, and the
- // associated fpos<encoding_state> for the position type, all other
- // bits equivalent to the required char_traits instantiations.
- template<typename _CharT>
- struct encoding_char_traits : public std::char_traits<_CharT>
- {
- typedef encoding_state state_type;
- typedef typename std::fpos<state_type> pos_type;
- };
-
-_GLIBCXX_END_NAMESPACE
-
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- using __gnu_cxx::encoding_state;
-
- /// codecvt<InternT, _ExternT, encoding_state> specialization.
- // This partial specialization takes advantage of iconv to provide
- // code conversions between a large number of character encodings.
- template<typename _InternT, typename _ExternT>
- class codecvt<_InternT, _ExternT, encoding_state>
- : public __codecvt_abstract_base<_InternT, _ExternT, encoding_state>
- {
- public:
- // Types:
- typedef codecvt_base::result result;
- typedef _InternT intern_type;
- typedef _ExternT extern_type;
- typedef __gnu_cxx::encoding_state state_type;
- typedef state_type::descriptor_type descriptor_type;
-
- // Data Members:
- static locale::id id;
-
- explicit
- codecvt(size_t __refs = 0)
- : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs)
- { }
-
- explicit
- codecvt(state_type& __enc, size_t __refs = 0)
- : __codecvt_abstract_base<intern_type, extern_type, state_type>(__refs)
- { }
-
- protected:
- virtual
- ~codecvt() { }
-
- virtual result
- do_out(state_type& __state, const intern_type* __from,
- const intern_type* __from_end, const intern_type*& __from_next,
- extern_type* __to, extern_type* __to_end,
- extern_type*& __to_next) const;
-
- virtual result
- do_unshift(state_type& __state, extern_type* __to,
- extern_type* __to_end, extern_type*& __to_next) const;
-
- virtual result
- do_in(state_type& __state, const extern_type* __from,
- const extern_type* __from_end, const extern_type*& __from_next,
- intern_type* __to, intern_type* __to_end,
- intern_type*& __to_next) const;
-
- virtual int
- do_encoding() const throw();
-
- virtual bool
- do_always_noconv() const throw();
-
- virtual int
- do_length(state_type&, const extern_type* __from,
- const extern_type* __end, size_t __max) const;
-
- virtual int
- do_max_length() const throw();
- };
-
- template<typename _InternT, typename _ExternT>
- locale::id
- codecvt<_InternT, _ExternT, encoding_state>::id;
-
- // This adaptor works around the signature problems of the second
- // argument to iconv(): SUSv2 and others use 'const char**', but glibc 2.2
- // uses 'char**', which matches the POSIX 1003.1-2001 standard.
- // Using this adaptor, g++ will do the work for us.
- template<typename _Tp>
- inline size_t
- __iconv_adaptor(size_t(*__func)(iconv_t, _Tp, size_t*, char**, size_t*),
- iconv_t __cd, char** __inbuf, size_t* __inbytes,
- char** __outbuf, size_t* __outbytes)
- { return __func(__cd, (_Tp)__inbuf, __inbytes, __outbuf, __outbytes); }
-
- template<typename _InternT, typename _ExternT>
- codecvt_base::result
- codecvt<_InternT, _ExternT, encoding_state>::
- do_out(state_type& __state, const intern_type* __from,
- const intern_type* __from_end, const intern_type*& __from_next,
- extern_type* __to, extern_type* __to_end,
- extern_type*& __to_next) const
- {
- result __ret = codecvt_base::error;
- if (__state.good())
- {
- const descriptor_type& __desc = __state.out_descriptor();
- const size_t __fmultiple = sizeof(intern_type);
- size_t __fbytes = __fmultiple * (__from_end - __from);
- const size_t __tmultiple = sizeof(extern_type);
- size_t __tbytes = __tmultiple * (__to_end - __to);
-
- // Argument list for iconv specifies a byte sequence. Thus,
- // all to/from arrays must be brutally casted to char*.
- char* __cto = reinterpret_cast<char*>(__to);
- char* __cfrom;
- size_t __conv;
-
- // Some encodings need a byte order marker as the first item
- // in the byte stream, to designate endian-ness. The default
- // value for the byte order marker is NULL, so if this is
- // the case, it's not necessary and we can just go on our
- // merry way.
- int __int_bom = __state.internal_bom();
- if (__int_bom)
- {
- size_t __size = __from_end - __from;
- intern_type* __cfixed = static_cast<intern_type*>
- (__builtin_alloca(sizeof(intern_type) * (__size + 1)));
- __cfixed[0] = static_cast<intern_type>(__int_bom);
- char_traits<intern_type>::copy(__cfixed + 1, __from, __size);
- __cfrom = reinterpret_cast<char*>(__cfixed);
- __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
- &__fbytes, &__cto, &__tbytes);
- }
- else
- {
- intern_type* __cfixed = const_cast<intern_type*>(__from);
- __cfrom = reinterpret_cast<char*>(__cfixed);
- __conv = __iconv_adaptor(iconv, __desc, &__cfrom, &__fbytes,
- &__cto, &__tbytes);
- }
-
- if (__conv != size_t(-1))
- {
- __from_next = reinterpret_cast<const intern_type*>(__cfrom);
- __to_next = reinterpret_cast<extern_type*>(__cto);
- __ret = codecvt_base::ok;
- }
- else
- {
- if (__fbytes < __fmultiple * (__from_end - __from))
- {
- __from_next = reinterpret_cast<const intern_type*>(__cfrom);
- __to_next = reinterpret_cast<extern_type*>(__cto);
- __ret = codecvt_base::partial;
- }
- else
- __ret = codecvt_base::error;
- }
- }
- return __ret;
- }
-
- template<typename _InternT, typename _ExternT>
- codecvt_base::result
- codecvt<_InternT, _ExternT, encoding_state>::
- do_unshift(state_type& __state, extern_type* __to,
- extern_type* __to_end, extern_type*& __to_next) const
- {
- result __ret = codecvt_base::error;
- if (__state.good())
- {
- const descriptor_type& __desc = __state.in_descriptor();
- const size_t __tmultiple = sizeof(intern_type);
- size_t __tlen = __tmultiple * (__to_end - __to);
-
- // Argument list for iconv specifies a byte sequence. Thus,
- // all to/from arrays must be brutally casted to char*.
- char* __cto = reinterpret_cast<char*>(__to);
- size_t __conv = __iconv_adaptor(iconv,__desc, NULL, NULL,
- &__cto, &__tlen);
-
- if (__conv != size_t(-1))
- {
- __to_next = reinterpret_cast<extern_type*>(__cto);
- if (__tlen == __tmultiple * (__to_end - __to))
- __ret = codecvt_base::noconv;
- else if (__tlen == 0)
- __ret = codecvt_base::ok;
- else
- __ret = codecvt_base::partial;
- }
- else
- __ret = codecvt_base::error;
- }
- return __ret;
- }
-
- template<typename _InternT, typename _ExternT>
- codecvt_base::result
- codecvt<_InternT, _ExternT, encoding_state>::
- do_in(state_type& __state, const extern_type* __from,
- const extern_type* __from_end, const extern_type*& __from_next,
- intern_type* __to, intern_type* __to_end,
- intern_type*& __to_next) const
- {
- result __ret = codecvt_base::error;
- if (__state.good())
- {
- const descriptor_type& __desc = __state.in_descriptor();
- const size_t __fmultiple = sizeof(extern_type);
- size_t __flen = __fmultiple * (__from_end - __from);
- const size_t __tmultiple = sizeof(intern_type);
- size_t __tlen = __tmultiple * (__to_end - __to);
-
- // Argument list for iconv specifies a byte sequence. Thus,
- // all to/from arrays must be brutally casted to char*.
- char* __cto = reinterpret_cast<char*>(__to);
- char* __cfrom;
- size_t __conv;
-
- // Some encodings need a byte order marker as the first item
- // in the byte stream, to designate endian-ness. The default
- // value for the byte order marker is NULL, so if this is
- // the case, it's not necessary and we can just go on our
- // merry way.
- int __ext_bom = __state.external_bom();
- if (__ext_bom)
- {
- size_t __size = __from_end - __from;
- extern_type* __cfixed = static_cast<extern_type*>
- (__builtin_alloca(sizeof(extern_type) * (__size + 1)));
- __cfixed[0] = static_cast<extern_type>(__ext_bom);
- char_traits<extern_type>::copy(__cfixed + 1, __from, __size);
- __cfrom = reinterpret_cast<char*>(__cfixed);
- __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
- &__flen, &__cto, &__tlen);
- }
- else
- {
- extern_type* __cfixed = const_cast<extern_type*>(__from);
- __cfrom = reinterpret_cast<char*>(__cfixed);
- __conv = __iconv_adaptor(iconv, __desc, &__cfrom,
- &__flen, &__cto, &__tlen);
- }
-
-
- if (__conv != size_t(-1))
- {
- __from_next = reinterpret_cast<const extern_type*>(__cfrom);
- __to_next = reinterpret_cast<intern_type*>(__cto);
- __ret = codecvt_base::ok;
- }
- else
- {
- if (__flen < static_cast<size_t>(__from_end - __from))
- {
- __from_next = reinterpret_cast<const extern_type*>(__cfrom);
- __to_next = reinterpret_cast<intern_type*>(__cto);
- __ret = codecvt_base::partial;
- }
- else
- __ret = codecvt_base::error;
- }
- }
- return __ret;
- }
-
- template<typename _InternT, typename _ExternT>
- int
- codecvt<_InternT, _ExternT, encoding_state>::
- do_encoding() const throw()
- {
- int __ret = 0;
- if (sizeof(_ExternT) <= sizeof(_InternT))
- __ret = sizeof(_InternT) / sizeof(_ExternT);
- return __ret;
- }
-
- template<typename _InternT, typename _ExternT>
- bool
- codecvt<_InternT, _ExternT, encoding_state>::
- do_always_noconv() const throw()
- { return false; }
-
- template<typename _InternT, typename _ExternT>
- int
- codecvt<_InternT, _ExternT, encoding_state>::
- do_length(state_type&, const extern_type* __from,
- const extern_type* __end, size_t __max) const
- { return std::min(__max, static_cast<size_t>(__end - __from)); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 74. Garbled text for codecvt::do_max_length
- template<typename _InternT, typename _ExternT>
- int
- codecvt<_InternT, _ExternT, encoding_state>::
- do_max_length() const throw()
- { return 1; }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/concurrence.h b/gcc-4.4.3/libstdc++-v3/include/ext/concurrence.h
deleted file mode 100644
index 71f8cd0a7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/concurrence.h
+++ /dev/null
@@ -1,322 +0,0 @@
-// Support for concurrent programing -*- C++ -*-
-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file concurrence.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _CONCURRENCE_H
-#define _CONCURRENCE_H 1
-
-#include <exception>
-#include <bits/gthr.h>
-#include <bits/functexcept.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Available locking policies:
- // _S_single single-threaded code that doesn't need to be locked.
- // _S_mutex multi-threaded code that requires additional support
- // from gthr.h or abstraction layers in concurrence.h.
- // _S_atomic multi-threaded code using atomic operations.
- enum _Lock_policy { _S_single, _S_mutex, _S_atomic };
-
- // Compile time constant that indicates prefered locking policy in
- // the current configuration.
- static const _Lock_policy __default_lock_policy =
-#ifdef __GTHREADS
-#if (defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_2) \
- && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4))
- _S_atomic;
-#else
- _S_mutex;
-#endif
-#else
- _S_single;
-#endif
-
- // NB: As this is used in libsupc++, need to only depend on
- // exception. No stdexception classes, no use of std::string.
- class __concurrence_lock_error : public std::exception
- {
- public:
- virtual char const*
- what() const throw()
- { return "__gnu_cxx::__concurrence_lock_error"; }
- };
-
- class __concurrence_unlock_error : public std::exception
- {
- public:
- virtual char const*
- what() const throw()
- { return "__gnu_cxx::__concurrence_unlock_error"; }
- };
-
- class __concurrence_broadcast_error : public std::exception
- {
- public:
- virtual char const*
- what() const throw()
- { return "__gnu_cxx::__concurrence_broadcast_error"; }
- };
-
- class __concurrence_wait_error : public std::exception
- {
- public:
- virtual char const*
- what() const throw()
- { return "__gnu_cxx::__concurrence_wait_error"; }
- };
-
- // Substitute for concurrence_error object in the case of -fno-exceptions.
- inline void
- __throw_concurrence_lock_error()
- {
-#if __EXCEPTIONS
- throw __concurrence_lock_error();
-#else
- __builtin_abort();
-#endif
- }
-
- inline void
- __throw_concurrence_unlock_error()
- {
-#if __EXCEPTIONS
- throw __concurrence_unlock_error();
-#else
- __builtin_abort();
-#endif
- }
-
-#ifdef __GTHREAD_HAS_COND
- inline void
- __throw_concurrence_broadcast_error()
- {
-#if __EXCEPTIONS
- throw __concurrence_broadcast_error();
-#else
- __builtin_abort();
-#endif
- }
-
- inline void
- __throw_concurrence_wait_error()
- {
-#if __EXCEPTIONS
- throw __concurrence_wait_error();
-#else
- __builtin_abort();
-#endif
- }
-#endif
-
- class __mutex
- {
- private:
- __gthread_mutex_t _M_mutex;
-
- __mutex(const __mutex&);
- __mutex& operator=(const __mutex&);
-
- public:
- __mutex()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
-#if defined __GTHREAD_MUTEX_INIT
- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
- _M_mutex = __tmp;
-#else
- __GTHREAD_MUTEX_INIT_FUNCTION(&_M_mutex);
-#endif
- }
-#endif
- }
-
- void lock()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
- if (__gthread_mutex_lock(&_M_mutex) != 0)
- __throw_concurrence_lock_error();
- }
-#endif
- }
-
- void unlock()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
- if (__gthread_mutex_unlock(&_M_mutex) != 0)
- __throw_concurrence_unlock_error();
- }
-#endif
- }
-
- __gthread_mutex_t* gthread_mutex(void)
- { return &_M_mutex; }
- };
-
- class __recursive_mutex
- {
- private:
- __gthread_recursive_mutex_t _M_mutex;
-
- __recursive_mutex(const __recursive_mutex&);
- __recursive_mutex& operator=(const __recursive_mutex&);
-
- public:
- __recursive_mutex()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
-#if defined __GTHREAD_RECURSIVE_MUTEX_INIT
- __gthread_recursive_mutex_t __tmp = __GTHREAD_RECURSIVE_MUTEX_INIT;
- _M_mutex = __tmp;
-#else
- __GTHREAD_RECURSIVE_MUTEX_INIT_FUNCTION(&_M_mutex);
-#endif
- }
-#endif
- }
-
- void lock()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
- if (__gthread_recursive_mutex_lock(&_M_mutex) != 0)
- __throw_concurrence_lock_error();
- }
-#endif
- }
-
- void unlock()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
- if (__gthread_recursive_mutex_unlock(&_M_mutex) != 0)
- __throw_concurrence_unlock_error();
- }
-#endif
- }
-
- __gthread_recursive_mutex_t* gthread_recursive_mutex(void)
- { return &_M_mutex; }
- };
-
- /// Scoped lock idiom.
- // Acquire the mutex here with a constructor call, then release with
- // the destructor call in accordance with RAII style.
- class __scoped_lock
- {
- public:
- typedef __mutex __mutex_type;
-
- private:
- __mutex_type& _M_device;
-
- __scoped_lock(const __scoped_lock&);
- __scoped_lock& operator=(const __scoped_lock&);
-
- public:
- explicit __scoped_lock(__mutex_type& __name) : _M_device(__name)
- { _M_device.lock(); }
-
- ~__scoped_lock() throw()
- { _M_device.unlock(); }
- };
-
-#ifdef __GTHREAD_HAS_COND
- class __cond
- {
- private:
- __gthread_cond_t _M_cond;
-
- __cond(const __cond&);
- __cond& operator=(const __cond&);
-
- public:
- __cond()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
-#if defined __GTHREAD_COND_INIT
- __gthread_cond_t __tmp = __GTHREAD_COND_INIT;
- _M_cond = __tmp;
-#else
- __GTHREAD_COND_INIT_FUNCTION(&_M_cond);
-#endif
- }
-#endif
- }
-
- void broadcast()
- {
-#if __GTHREADS
- if (__gthread_active_p())
- {
- if (__gthread_cond_broadcast(&_M_cond) != 0)
- __throw_concurrence_broadcast_error();
- }
-#endif
- }
-
- void wait(__mutex *mutex)
- {
-#if __GTHREADS
- {
- if (__gthread_cond_wait(&_M_cond, mutex->gthread_mutex()) != 0)
- __throw_concurrence_wait_error();
- }
-#endif
- }
-
- void wait_recursive(__recursive_mutex *mutex)
- {
-#if __GTHREADS
- {
- if (__gthread_cond_wait_recursive(&_M_cond,
- mutex->gthread_recursive_mutex())
- != 0)
- __throw_concurrence_wait_error();
- }
-#endif
- }
- };
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/debug_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/debug_allocator.h
deleted file mode 100644
index 18d80498e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/debug_allocator.h
+++ /dev/null
@@ -1,124 +0,0 @@
-// Allocators -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/debug_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- * You should only include this header if you are using GCC 3 or later.
- */
-
-#ifndef _DEBUG_ALLOCATOR_H
-#define _DEBUG_ALLOCATOR_H 1
-
-#include <stdexcept>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
-
- /**
- * @brief A meta-allocator with debugging bits, as per [20.4].
- * @ingroup allocators
- *
- * This is precisely the allocator defined in the C++ Standard.
- * - all allocation calls operator new
- * - all deallocation calls operator delete
- */
- template<typename _Alloc>
- class debug_allocator
- {
- public:
- typedef typename _Alloc::size_type size_type;
- typedef typename _Alloc::difference_type difference_type;
- typedef typename _Alloc::pointer pointer;
- typedef typename _Alloc::const_pointer const_pointer;
- typedef typename _Alloc::reference reference;
- typedef typename _Alloc::const_reference const_reference;
- typedef typename _Alloc::value_type value_type;
-
- private:
- // _M_extra is the number of objects that correspond to the
- // extra space where debug information is stored.
- size_type _M_extra;
-
- _Alloc _M_allocator;
-
- public:
- debug_allocator()
- {
- const size_t __obj_size = sizeof(value_type);
- _M_extra = (sizeof(size_type) + __obj_size - 1) / __obj_size;
- }
-
- pointer
- allocate(size_type __n)
- {
- pointer __res = _M_allocator.allocate(__n + _M_extra);
- size_type* __ps = reinterpret_cast<size_type*>(__res);
- *__ps = __n;
- return __res + _M_extra;
- }
-
- pointer
- allocate(size_type __n, const void* __hint)
- {
- pointer __res = _M_allocator.allocate(__n + _M_extra, __hint);
- size_type* __ps = reinterpret_cast<size_type*>(__res);
- *__ps = __n;
- return __res + _M_extra;
- }
-
- void
- deallocate(pointer __p, size_type __n)
- {
- if (__p)
- {
- pointer __real_p = __p - _M_extra;
- if (*reinterpret_cast<size_type*>(__real_p) != __n)
- {
- throw std::runtime_error("debug_allocator::deallocate"
- " wrong size");
- }
- _M_allocator.deallocate(__real_p, __n + _M_extra);
- }
- else
- throw std::runtime_error("debug_allocator::deallocate null pointer");
- }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/enc_filebuf.h b/gcc-4.4.3/libstdc++-v3/include/ext/enc_filebuf.h
deleted file mode 100644
index 4f8356791..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/enc_filebuf.h
+++ /dev/null
@@ -1,62 +0,0 @@
-// filebuf with encoding state type -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/enc_filebuf.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _EXT_ENC_FILEBUF_H
-#define _EXT_ENC_FILEBUF_H 1
-
-#include <fstream>
-#include <locale>
-#include <ext/codecvt_specializations.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /// class enc_filebuf.
- template<typename _CharT>
- class enc_filebuf
- : public std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >
- {
- public:
- typedef encoding_char_traits<_CharT> traits_type;
- typedef typename traits_type::state_type state_type;
- typedef typename traits_type::pos_type pos_type;
-
- enc_filebuf(state_type& __state)
- : std::basic_filebuf<_CharT, encoding_char_traits<_CharT> >()
- { this->_M_state_beg = __state; }
-
- private:
- // concept requirements:
- // Set state type to something useful.
- // Something more than copyconstructible is needed here, so
- // require default and copy constructible + assignment operator.
- __glibcxx_class_requires(state_type, _SGIAssignableConcept)
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/extptr_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/extptr_allocator.h
deleted file mode 100644
index fab6b1d85..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/extptr_allocator.h
+++ /dev/null
@@ -1,176 +0,0 @@
-// <extptr_allocator.h> -*- C++ -*-
-
-// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/**
- * @file ext/extptr_allocator.h
- * @author Bob Walters
- *
- * An example allocator which uses an alternative pointer type from
- * bits/pointer.h. Supports test cases which confirm container support
- * for alternative pointers.
- */
-
-#ifndef _EXTPTR_ALLOCATOR_H
-#define _EXTPTR_ALLOCATOR_H 1
-
-#include <memory>
-#include <limits>
-#include <ext/pointer.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /**
- * @brief An example allocator which uses a non-standard pointer type.
- * @ingroup allocators
- *
- * This allocator specifies that containers use a 'relative pointer' as it's
- * pointer type. (See ext/pointer.h) Memory allocation in this example
- * is still performed using std::allocator.
- */
- template<typename _Tp>
- class _ExtPtr_allocator
- {
- public:
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
-
- // Note the non-standard pointer types.
- typedef _Pointer_adapter<_Relative_pointer_impl<_Tp> > pointer;
- typedef _Pointer_adapter<_Relative_pointer_impl<const _Tp> >
- const_pointer;
-
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Up>
- struct rebind
- { typedef _ExtPtr_allocator<_Up> other; };
-
- _ExtPtr_allocator() throw()
- : _M_real_alloc() { }
-
- _ExtPtr_allocator(const _ExtPtr_allocator &__rarg) throw()
- : _M_real_alloc(__rarg._M_real_alloc) { }
-
- template<typename _Up>
- _ExtPtr_allocator(const _ExtPtr_allocator<_Up>& __rarg) throw()
- : _M_real_alloc(__rarg._M_getUnderlyingImp()) { }
-
- ~_ExtPtr_allocator() throw()
- { }
-
- pointer address(reference __x) const
- { return &__x; }
-
- const_pointer address(const_reference __x) const
- { return &__x; }
-
- pointer allocate(size_type __n, void* __hint = 0)
- { return _M_real_alloc.allocate(__n,__hint); }
-
- void deallocate(pointer __p, size_type __n)
- { _M_real_alloc.deallocate(__p.get(), __n); }
-
- size_type max_size() const throw()
- { return std::numeric_limits<size_type>::max() / sizeof(_Tp); }
-
- void construct(pointer __p, const _Tp& __val)
- { ::new(__p.get()) _Tp(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new(__p.get()) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void destroy(pointer __p)
- { __p->~_Tp(); }
-
- template<typename _Up>
- inline bool
- operator==(const _ExtPtr_allocator<_Up>& __rarg)
- { return _M_real_alloc == __rarg._M_getUnderlyingImp(); }
-
- inline bool
- operator==(const _ExtPtr_allocator& __rarg)
- { return _M_real_alloc == __rarg._M_real_alloc; }
-
- template<typename _Up>
- inline bool
- operator!=(const _ExtPtr_allocator<_Up>& __rarg)
- { return _M_real_alloc != __rarg._M_getUnderlyingImp(); }
-
- inline bool
- operator!=(const _ExtPtr_allocator& __rarg)
- { return _M_real_alloc != __rarg._M_real_alloc; }
-
- template<typename _Up>
- inline friend void
- swap(_ExtPtr_allocator<_Up>&, _ExtPtr_allocator<_Up>&);
-
- // A method specific to this implementation.
- const std::allocator<_Tp>&
- _M_getUnderlyingImp() const
- { return _M_real_alloc; }
-
- private:
- std::allocator<_Tp> _M_real_alloc;
- };
-
- // _ExtPtr_allocator<void> specialization.
- template<>
- class _ExtPtr_allocator<void>
- {
- public:
- typedef std::size_t size_type;
- typedef std::ptrdiff_t difference_type;
- typedef void value_type;
-
- // Note the non-standard pointer types
- typedef _Pointer_adapter<_Relative_pointer_impl<void> > pointer;
- typedef _Pointer_adapter<_Relative_pointer_impl<const void> >
- const_pointer;
-
- template<typename _Up>
- struct rebind
- { typedef _ExtPtr_allocator<_Up> other; };
-
- private:
- std::allocator<void> _M_real_alloc;
- };
-
- template<typename _Tp>
- inline void
- swap(_ExtPtr_allocator<_Tp>& __larg, _ExtPtr_allocator<_Tp>& __rarg)
- {
- std::allocator<_Tp> __tmp( __rarg._M_real_alloc );
- __rarg._M_real_alloc = __larg._M_real_alloc;
- __larg._M_real_alloc = __tmp;
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _EXTPTR_ALLOCATOR_H */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/functional b/gcc-4.4.3/libstdc++-v3/include/ext/functional
deleted file mode 100644
index 30afd586b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/functional
+++ /dev/null
@@ -1,425 +0,0 @@
-// Functional extensions -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/functional
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _EXT_FUNCTIONAL
-#define _EXT_FUNCTIONAL 1
-
-#pragma GCC system_header
-
-#include <functional>
-#include <cstddef>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::unary_function;
- using std::binary_function;
- using std::mem_fun1_t;
- using std::const_mem_fun1_t;
- using std::mem_fun1_ref_t;
- using std::const_mem_fun1_ref_t;
-
- /** The @c identity_element functions are not part of the C++
- * standard; SGI provided them as an extension. Its argument is an
- * operation, and its return value is the identity element for that
- * operation. It is overloaded for addition and multiplication,
- * and you can overload it for your own nefarious operations.
- *
- * @addtogroup SGIextensions
- * @{
- */
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Tp>
- inline _Tp
- identity_element(std::plus<_Tp>)
- { return _Tp(0); }
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Tp>
- inline _Tp
- identity_element(std::multiplies<_Tp>)
- { return _Tp(1); }
- /** @} */
-
- /** As an extension to the binders, SGI provided composition functors and
- * wrapper functions to aid in their creation. The @c unary_compose
- * functor is constructed from two functions/functors, @c f and @c g.
- * Calling @c operator() with a single argument @c x returns @c f(g(x)).
- * The function @c compose1 takes the two functions and constructs a
- * @c unary_compose variable for you.
- *
- * @c binary_compose is constructed from three functors, @c f, @c g1,
- * and @c g2. Its @c operator() returns @c f(g1(x),g2(x)). The function
- * @compose2 takes f, g1, and g2, and constructs the @c binary_compose
- * instance for you. For example, if @c f returns an int, then
- * \code
- * int answer = (compose2(f,g1,g2))(x);
- * \endcode
- * is equivalent to
- * \code
- * int temp1 = g1(x);
- * int temp2 = g2(x);
- * int answer = f(temp1,temp2);
- * \endcode
- * But the first form is more compact, and can be passed around as a
- * functor to other algorithms.
- *
- * @addtogroup SGIextensions
- * @{
- */
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Operation1, class _Operation2>
- class unary_compose
- : public unary_function<typename _Operation2::argument_type,
- typename _Operation1::result_type>
- {
- protected:
- _Operation1 _M_fn1;
- _Operation2 _M_fn2;
-
- public:
- unary_compose(const _Operation1& __x, const _Operation2& __y)
- : _M_fn1(__x), _M_fn2(__y) {}
-
- typename _Operation1::result_type
- operator()(const typename _Operation2::argument_type& __x) const
- { return _M_fn1(_M_fn2(__x)); }
- };
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Operation1, class _Operation2>
- inline unary_compose<_Operation1, _Operation2>
- compose1(const _Operation1& __fn1, const _Operation2& __fn2)
- { return unary_compose<_Operation1,_Operation2>(__fn1, __fn2); }
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Operation1, class _Operation2, class _Operation3>
- class binary_compose
- : public unary_function<typename _Operation2::argument_type,
- typename _Operation1::result_type>
- {
- protected:
- _Operation1 _M_fn1;
- _Operation2 _M_fn2;
- _Operation3 _M_fn3;
-
- public:
- binary_compose(const _Operation1& __x, const _Operation2& __y,
- const _Operation3& __z)
- : _M_fn1(__x), _M_fn2(__y), _M_fn3(__z) { }
-
- typename _Operation1::result_type
- operator()(const typename _Operation2::argument_type& __x) const
- { return _M_fn1(_M_fn2(__x), _M_fn3(__x)); }
- };
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Operation1, class _Operation2, class _Operation3>
- inline binary_compose<_Operation1, _Operation2, _Operation3>
- compose2(const _Operation1& __fn1, const _Operation2& __fn2,
- const _Operation3& __fn3)
- { return binary_compose<_Operation1, _Operation2, _Operation3>
- (__fn1, __fn2, __fn3); }
- /** @} */
-
- /** As an extension, SGI provided a functor called @c identity. When a
- * functor is required but no operations are desired, this can be used as a
- * pass-through. Its @c operator() returns its argument unchanged.
- *
- * @addtogroup SGIextensions
- */
- template <class _Tp>
- struct identity : public std::_Identity<_Tp> {};
-
- /** @c select1st and @c select2nd are extensions provided by SGI. Their
- * @c operator()s
- * take a @c std::pair as an argument, and return either the first member
- * or the second member, respectively. They can be used (especially with
- * the composition functors) to "strip" data from a sequence before
- * performing the remainder of an algorithm.
- *
- * @addtogroup SGIextensions
- * @{
- */
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Pair>
- struct select1st : public std::_Select1st<_Pair> {};
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Pair>
- struct select2nd : public std::_Select2nd<_Pair> {};
- /** @} */
-
- // extension documented next
- template <class _Arg1, class _Arg2>
- struct _Project1st : public binary_function<_Arg1, _Arg2, _Arg1>
- {
- _Arg1
- operator()(const _Arg1& __x, const _Arg2&) const
- { return __x; }
- };
-
- template <class _Arg1, class _Arg2>
- struct _Project2nd : public binary_function<_Arg1, _Arg2, _Arg2>
- {
- _Arg2
- operator()(const _Arg1&, const _Arg2& __y) const
- { return __y; }
- };
-
- /** The @c operator() of the @c project1st functor takes two arbitrary
- * arguments and returns the first one, while @c project2nd returns the
- * second one. They are extensions provided by SGI.
- *
- * @addtogroup SGIextensions
- * @{
- */
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Arg1, class _Arg2>
- struct project1st : public _Project1st<_Arg1, _Arg2> {};
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Arg1, class _Arg2>
- struct project2nd : public _Project2nd<_Arg1, _Arg2> {};
- /** @} */
-
- // extension documented next
- template <class _Result>
- struct _Constant_void_fun
- {
- typedef _Result result_type;
- result_type _M_val;
-
- _Constant_void_fun(const result_type& __v) : _M_val(__v) {}
-
- const result_type&
- operator()() const
- { return _M_val; }
- };
-
- template <class _Result, class _Argument>
- struct _Constant_unary_fun
- {
- typedef _Argument argument_type;
- typedef _Result result_type;
- result_type _M_val;
-
- _Constant_unary_fun(const result_type& __v) : _M_val(__v) {}
-
- const result_type&
- operator()(const _Argument&) const
- { return _M_val; }
- };
-
- template <class _Result, class _Arg1, class _Arg2>
- struct _Constant_binary_fun
- {
- typedef _Arg1 first_argument_type;
- typedef _Arg2 second_argument_type;
- typedef _Result result_type;
- _Result _M_val;
-
- _Constant_binary_fun(const _Result& __v) : _M_val(__v) {}
-
- const result_type&
- operator()(const _Arg1&, const _Arg2&) const
- { return _M_val; }
- };
-
- /** These three functors are each constructed from a single arbitrary
- * variable/value. Later, their @c operator()s completely ignore any
- * arguments passed, and return the stored value.
- * - @c constant_void_fun's @c operator() takes no arguments
- * - @c constant_unary_fun's @c operator() takes one argument (ignored)
- * - @c constant_binary_fun's @c operator() takes two arguments (ignored)
- *
- * The helper creator functions @c constant0, @c constant1, and
- * @c constant2 each take a "result" argument and construct variables of
- * the appropriate functor type.
- *
- * @addtogroup SGIextensions
- * @{
- */
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result>
- struct constant_void_fun
- : public _Constant_void_fun<_Result>
- {
- constant_void_fun(const _Result& __v)
- : _Constant_void_fun<_Result>(__v) {}
- };
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result, class _Argument = _Result>
- struct constant_unary_fun : public _Constant_unary_fun<_Result, _Argument>
- {
- constant_unary_fun(const _Result& __v)
- : _Constant_unary_fun<_Result, _Argument>(__v) {}
- };
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result, class _Arg1 = _Result, class _Arg2 = _Arg1>
- struct constant_binary_fun
- : public _Constant_binary_fun<_Result, _Arg1, _Arg2>
- {
- constant_binary_fun(const _Result& __v)
- : _Constant_binary_fun<_Result, _Arg1, _Arg2>(__v) {}
- };
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result>
- inline constant_void_fun<_Result>
- constant0(const _Result& __val)
- { return constant_void_fun<_Result>(__val); }
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result>
- inline constant_unary_fun<_Result, _Result>
- constant1(const _Result& __val)
- { return constant_unary_fun<_Result, _Result>(__val); }
-
- /// An \link SGIextensions SGI extension \endlink.
- template <class _Result>
- inline constant_binary_fun<_Result,_Result,_Result>
- constant2(const _Result& __val)
- { return constant_binary_fun<_Result, _Result, _Result>(__val); }
- /** @} */
-
- /** The @c subtractive_rng class is documented on
- * <a href="http://www.sgi.com/tech/stl/">SGI's site</a>.
- * Note that this code assumes that @c int is 32 bits.
- *
- * @ingroup SGIextensions
- */
- class subtractive_rng
- : public unary_function<unsigned int, unsigned int>
- {
- private:
- unsigned int _M_table[55];
- size_t _M_index1;
- size_t _M_index2;
-
- public:
- /// Returns a number less than the argument.
- unsigned int
- operator()(unsigned int __limit)
- {
- _M_index1 = (_M_index1 + 1) % 55;
- _M_index2 = (_M_index2 + 1) % 55;
- _M_table[_M_index1] = _M_table[_M_index1] - _M_table[_M_index2];
- return _M_table[_M_index1] % __limit;
- }
-
- void
- _M_initialize(unsigned int __seed)
- {
- unsigned int __k = 1;
- _M_table[54] = __seed;
- size_t __i;
- for (__i = 0; __i < 54; __i++)
- {
- size_t __ii = (21 * (__i + 1) % 55) - 1;
- _M_table[__ii] = __k;
- __k = __seed - __k;
- __seed = _M_table[__ii];
- }
- for (int __loop = 0; __loop < 4; __loop++)
- {
- for (__i = 0; __i < 55; __i++)
- _M_table[__i] = _M_table[__i] - _M_table[(1 + __i + 30) % 55];
- }
- _M_index1 = 0;
- _M_index2 = 31;
- }
-
- /// Ctor allowing you to initialize the seed.
- subtractive_rng(unsigned int __seed)
- { _M_initialize(__seed); }
-
- /// Default ctor; initializes its state with some number you don't see.
- subtractive_rng()
- { _M_initialize(161803398u); }
- };
-
- // Mem_fun adaptor helper functions mem_fun1 and mem_fun1_ref,
- // provided for backward compatibility, they are no longer part of
- // the C++ standard.
-
- template <class _Ret, class _Tp, class _Arg>
- inline mem_fun1_t<_Ret, _Tp, _Arg>
- mem_fun1(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
-
- template <class _Ret, class _Tp, class _Arg>
- inline const_mem_fun1_t<_Ret, _Tp, _Arg>
- mem_fun1(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_t<_Ret, _Tp, _Arg>(__f); }
-
- template <class _Ret, class _Tp, class _Arg>
- inline mem_fun1_ref_t<_Ret, _Tp, _Arg>
- mem_fun1_ref(_Ret (_Tp::*__f)(_Arg))
- { return mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
-
- template <class _Ret, class _Tp, class _Arg>
- inline const_mem_fun1_ref_t<_Ret, _Tp, _Arg>
- mem_fun1_ref(_Ret (_Tp::*__f)(_Arg) const)
- { return const_mem_fun1_ref_t<_Ret, _Tp, _Arg>(__f); }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/iterator b/gcc-4.4.3/libstdc++-v3/include/ext/iterator
deleted file mode 100644
index 83b4b578a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/iterator
+++ /dev/null
@@ -1,113 +0,0 @@
-// HP/SGI iterator extensions -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996-1998
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/iterator
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _EXT_ITERATOR
-#define _EXT_ITERATOR 1
-
-#pragma GCC system_header
-
-#include <bits/concept_check.h>
-#include <iterator>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // There are two signatures for distance. In addition to the one
- // taking two iterators and returning a result, there is another
- // taking two iterators and a reference-to-result variable, and
- // returning nothing. The latter seems to be an SGI extension.
- // -- pedwards
- template<typename _InputIterator, typename _Distance>
- inline void
- __distance(_InputIterator __first, _InputIterator __last,
- _Distance& __n, std::input_iterator_tag)
- {
- // concept requirements
- __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
- while (__first != __last)
- {
- ++__first;
- ++__n;
- }
- }
-
- template<typename _RandomAccessIterator, typename _Distance>
- inline void
- __distance(_RandomAccessIterator __first, _RandomAccessIterator __last,
- _Distance& __n, std::random_access_iterator_tag)
- {
- // concept requirements
- __glibcxx_function_requires(_RandomAccessIteratorConcept<
- _RandomAccessIterator>)
- __n += __last - __first;
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _InputIterator, typename _Distance>
- inline void
- distance(_InputIterator __first, _InputIterator __last,
- _Distance& __n)
- {
- // concept requirements -- taken care of in __distance
- __distance(__first, __last, __n, std::__iterator_category(__first));
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/malloc_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/malloc_allocator.h
deleted file mode 100644
index 4c4a72a17..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/malloc_allocator.h
+++ /dev/null
@@ -1,134 +0,0 @@
-// Allocator that wraps "C" malloc -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/malloc_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _MALLOC_ALLOCATOR_H
-#define _MALLOC_ALLOCATOR_H 1
-
-#include <cstdlib>
-#include <new>
-#include <bits/functexcept.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- /**
- * @brief An allocator that uses malloc.
- * @ingroup allocators
- *
- * This is precisely the allocator defined in the C++ Standard.
- * - all allocation calls malloc
- * - all deallocation calls free
- */
- template<typename _Tp>
- class malloc_allocator
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef malloc_allocator<_Tp1> other; };
-
- malloc_allocator() throw() { }
-
- malloc_allocator(const malloc_allocator&) throw() { }
-
- template<typename _Tp1>
- malloc_allocator(const malloc_allocator<_Tp1>&) throw() { }
-
- ~malloc_allocator() throw() { }
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- // NB: __n is permitted to be 0. The C++ standard says nothing
- // about what the return value is when __n == 0.
- pointer
- allocate(size_type __n, const void* = 0)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- pointer __ret = static_cast<_Tp*>(std::malloc(__n * sizeof(_Tp)));
- if (!__ret)
- std::__throw_bad_alloc();
- return __ret;
- }
-
- // __p is not permitted to be a null pointer.
- void
- deallocate(pointer __p, size_type)
- { std::free(static_cast<void*>(__p)); }
-
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 402. wrong new expression in [some_] allocator::construct
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) value_type(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
-
- template<typename _Tp>
- inline bool
- operator==(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&)
- { return true; }
-
- template<typename _Tp>
- inline bool
- operator!=(const malloc_allocator<_Tp>&, const malloc_allocator<_Tp>&)
- { return false; }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/memory b/gcc-4.4.3/libstdc++-v3/include/ext/memory
deleted file mode 100644
index 7776d730a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/memory
+++ /dev/null
@@ -1,195 +0,0 @@
-// Memory extensions -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/memory
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _EXT_MEMORY
-#define _EXT_MEMORY 1
-
-#pragma GCC system_header
-
-#include <memory>
-#include <bits/stl_tempbuf.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::ptrdiff_t;
- using std::pair;
- using std::__iterator_category;
- using std::_Temporary_buffer;
-
- template<typename _InputIter, typename _Size, typename _ForwardIter>
- pair<_InputIter, _ForwardIter>
- __uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result, std::input_iterator_tag)
- {
- _ForwardIter __cur = __result;
- __try
- {
- for (; __count > 0 ; --__count, ++__first, ++__cur)
- std::_Construct(&*__cur, *__first);
- return pair<_InputIter, _ForwardIter>(__first, __cur);
- }
- __catch(...)
- {
- std::_Destroy(__result, __cur);
- __throw_exception_again;
- }
- }
-
- template<typename _RandomAccessIter, typename _Size, typename _ForwardIter>
- inline pair<_RandomAccessIter, _ForwardIter>
- __uninitialized_copy_n(_RandomAccessIter __first, _Size __count,
- _ForwardIter __result,
- std::random_access_iterator_tag)
- {
- _RandomAccessIter __last = __first + __count;
- return (pair<_RandomAccessIter, _ForwardIter>
- (__last, std::uninitialized_copy(__first, __last, __result)));
- }
-
- template<typename _InputIter, typename _Size, typename _ForwardIter>
- inline pair<_InputIter, _ForwardIter>
- __uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result)
- { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result,
- __iterator_category(__first)); }
-
- /**
- * @brief Copies the range [first,last) into result.
- * @param first An input iterator.
- * @param last An input iterator.
- * @param result An output iterator.
- * @return result + (first - last)
- * @ingroup SGIextensions
- *
- * Like copy(), but does not require an initialized output range.
- */
- template<typename _InputIter, typename _Size, typename _ForwardIter>
- inline pair<_InputIter, _ForwardIter>
- uninitialized_copy_n(_InputIter __first, _Size __count,
- _ForwardIter __result)
- { return __gnu_cxx::__uninitialized_copy_n(__first, __count, __result,
- __iterator_category(__first)); }
-
-
- // An alternative version of uninitialized_copy_n that constructs
- // and destroys objects with a user-provided allocator.
- template<typename _InputIter, typename _Size, typename _ForwardIter,
- typename _Allocator>
- pair<_InputIter, _ForwardIter>
- __uninitialized_copy_n_a(_InputIter __first, _Size __count,
- _ForwardIter __result,
- _Allocator __alloc)
- {
- _ForwardIter __cur = __result;
- __try
- {
- for (; __count > 0 ; --__count, ++__first, ++__cur)
- __alloc.construct(&*__cur, *__first);
- return pair<_InputIter, _ForwardIter>(__first, __cur);
- }
- __catch(...)
- {
- std::_Destroy(__result, __cur, __alloc);
- __throw_exception_again;
- }
- }
-
- template<typename _InputIter, typename _Size, typename _ForwardIter,
- typename _Tp>
- inline pair<_InputIter, _ForwardIter>
- __uninitialized_copy_n_a(_InputIter __first, _Size __count,
- _ForwardIter __result,
- std::allocator<_Tp>)
- {
- return __gnu_cxx::uninitialized_copy_n(__first, __count, __result);
- }
-
- /**
- * This class provides similar behavior and semantics of the standard
- * functions get_temporary_buffer() and return_temporary_buffer(), but
- * encapsulated in a type vaguely resembling a standard container.
- *
- * By default, a temporary_buffer<Iter> stores space for objects of
- * whatever type the Iter iterator points to. It is constructed from a
- * typical [first,last) range, and provides the begin(), end(), size()
- * functions, as well as requested_size(). For non-trivial types, copies
- * of *first will be used to initialize the storage.
- *
- * @c malloc is used to obtain underlying storage.
- *
- * Like get_temporary_buffer(), not all the requested memory may be
- * available. Ideally, the created buffer will be large enough to hold a
- * copy of [first,last), but if size() is less than requested_size(),
- * then this didn't happen.
- *
- * @ingroup SGIextensions
- */
- template <class _ForwardIterator, class _Tp
- = typename std::iterator_traits<_ForwardIterator>::value_type >
- struct temporary_buffer : public _Temporary_buffer<_ForwardIterator, _Tp>
- {
- /// Requests storage large enough to hold a copy of [first,last).
- temporary_buffer(_ForwardIterator __first, _ForwardIterator __last)
- : _Temporary_buffer<_ForwardIterator, _Tp>(__first, __last) { }
-
- /// Destroys objects and frees storage.
- ~temporary_buffer() { }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/mt_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/mt_allocator.h
deleted file mode 100644
index f03f3a610..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/mt_allocator.h
+++ /dev/null
@@ -1,751 +0,0 @@
-// MT-optimized allocator -*- C++ -*-
-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/mt_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _MT_ALLOCATOR_H
-#define _MT_ALLOCATOR_H 1
-
-#include <new>
-#include <cstdlib>
-#include <bits/functexcept.h>
-#include <ext/atomicity.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- typedef void (*__destroy_handler)(void*);
-
- /// Base class for pool object.
- struct __pool_base
- {
- // Using short int as type for the binmap implies we are never
- // caching blocks larger than 32768 with this allocator.
- typedef unsigned short int _Binmap_type;
-
- // Variables used to configure the behavior of the allocator,
- // assigned and explained in detail below.
- struct _Tune
- {
- // Compile time constants for the default _Tune values.
- enum { _S_align = 8 };
- enum { _S_max_bytes = 128 };
- enum { _S_min_bin = 8 };
- enum { _S_chunk_size = 4096 - 4 * sizeof(void*) };
- enum { _S_max_threads = 4096 };
- enum { _S_freelist_headroom = 10 };
-
- // Alignment needed.
- // NB: In any case must be >= sizeof(_Block_record), that
- // is 4 on 32 bit machines and 8 on 64 bit machines.
- size_t _M_align;
-
- // Allocation requests (after round-up to power of 2) below
- // this value will be handled by the allocator. A raw new/
- // call will be used for requests larger than this value.
- // NB: Must be much smaller than _M_chunk_size and in any
- // case <= 32768.
- size_t _M_max_bytes;
-
- // Size in bytes of the smallest bin.
- // NB: Must be a power of 2 and >= _M_align (and of course
- // much smaller than _M_max_bytes).
- size_t _M_min_bin;
-
- // In order to avoid fragmenting and minimize the number of
- // new() calls we always request new memory using this
- // value. Based on previous discussions on the libstdc++
- // mailing list we have chosen the value below.
- // See http://gcc.gnu.org/ml/libstdc++/2001-07/msg00077.html
- // NB: At least one order of magnitude > _M_max_bytes.
- size_t _M_chunk_size;
-
- // The maximum number of supported threads. For
- // single-threaded operation, use one. Maximum values will
- // vary depending on details of the underlying system. (For
- // instance, Linux 2.4.18 reports 4070 in
- // /proc/sys/kernel/threads-max, while Linux 2.6.6 reports
- // 65534)
- size_t _M_max_threads;
-
- // Each time a deallocation occurs in a threaded application
- // we make sure that there are no more than
- // _M_freelist_headroom % of used memory on the freelist. If
- // the number of additional records is more than
- // _M_freelist_headroom % of the freelist, we move these
- // records back to the global pool.
- size_t _M_freelist_headroom;
-
- // Set to true forces all allocations to use new().
- bool _M_force_new;
-
- explicit
- _Tune()
- : _M_align(_S_align), _M_max_bytes(_S_max_bytes), _M_min_bin(_S_min_bin),
- _M_chunk_size(_S_chunk_size), _M_max_threads(_S_max_threads),
- _M_freelist_headroom(_S_freelist_headroom),
- _M_force_new(std::getenv("GLIBCXX_FORCE_NEW") ? true : false)
- { }
-
- explicit
- _Tune(size_t __align, size_t __maxb, size_t __minbin, size_t __chunk,
- size_t __maxthreads, size_t __headroom, bool __force)
- : _M_align(__align), _M_max_bytes(__maxb), _M_min_bin(__minbin),
- _M_chunk_size(__chunk), _M_max_threads(__maxthreads),
- _M_freelist_headroom(__headroom), _M_force_new(__force)
- { }
- };
-
- struct _Block_address
- {
- void* _M_initial;
- _Block_address* _M_next;
- };
-
- const _Tune&
- _M_get_options() const
- { return _M_options; }
-
- void
- _M_set_options(_Tune __t)
- {
- if (!_M_init)
- _M_options = __t;
- }
-
- bool
- _M_check_threshold(size_t __bytes)
- { return __bytes > _M_options._M_max_bytes || _M_options._M_force_new; }
-
- size_t
- _M_get_binmap(size_t __bytes)
- { return _M_binmap[__bytes]; }
-
- size_t
- _M_get_align()
- { return _M_options._M_align; }
-
- explicit
- __pool_base()
- : _M_options(_Tune()), _M_binmap(NULL), _M_init(false) { }
-
- explicit
- __pool_base(const _Tune& __options)
- : _M_options(__options), _M_binmap(NULL), _M_init(false) { }
-
- private:
- explicit
- __pool_base(const __pool_base&);
-
- __pool_base&
- operator=(const __pool_base&);
-
- protected:
- // Configuration options.
- _Tune _M_options;
-
- _Binmap_type* _M_binmap;
-
- // Configuration of the pool object via _M_options can happen
- // after construction but before initialization. After
- // initialization is complete, this variable is set to true.
- bool _M_init;
- };
-
-
- /**
- * @brief Data describing the underlying memory pool, parameterized on
- * threading support.
- */
- template<bool _Thread>
- class __pool;
-
- /// Specialization for single thread.
- template<>
- class __pool<false> : public __pool_base
- {
- public:
- union _Block_record
- {
- // Points to the block_record of the next free block.
- _Block_record* _M_next;
- };
-
- struct _Bin_record
- {
- // An "array" of pointers to the first free block.
- _Block_record** _M_first;
-
- // A list of the initial addresses of all allocated blocks.
- _Block_address* _M_address;
- };
-
- void
- _M_initialize_once()
- {
- if (__builtin_expect(_M_init == false, false))
- _M_initialize();
- }
-
- void
- _M_destroy() throw();
-
- char*
- _M_reserve_block(size_t __bytes, const size_t __thread_id);
-
- void
- _M_reclaim_block(char* __p, size_t __bytes);
-
- size_t
- _M_get_thread_id() { return 0; }
-
- const _Bin_record&
- _M_get_bin(size_t __which)
- { return _M_bin[__which]; }
-
- void
- _M_adjust_freelist(const _Bin_record&, _Block_record*, size_t)
- { }
-
- explicit __pool()
- : _M_bin(NULL), _M_bin_size(1) { }
-
- explicit __pool(const __pool_base::_Tune& __tune)
- : __pool_base(__tune), _M_bin(NULL), _M_bin_size(1) { }
-
- private:
- // An "array" of bin_records each of which represents a specific
- // power of 2 size. Memory to this "array" is allocated in
- // _M_initialize().
- _Bin_record* _M_bin;
-
- // Actual value calculated in _M_initialize().
- size_t _M_bin_size;
-
- void
- _M_initialize();
- };
-
-#ifdef __GTHREADS
- /// Specialization for thread enabled, via gthreads.h.
- template<>
- class __pool<true> : public __pool_base
- {
- public:
- // Each requesting thread is assigned an id ranging from 1 to
- // _S_max_threads. Thread id 0 is used as a global memory pool.
- // In order to get constant performance on the thread assignment
- // routine, we keep a list of free ids. When a thread first
- // requests memory we remove the first record in this list and
- // stores the address in a __gthread_key. When initializing the
- // __gthread_key we specify a destructor. When this destructor
- // (i.e. the thread dies) is called, we return the thread id to
- // the front of this list.
- struct _Thread_record
- {
- // Points to next free thread id record. NULL if last record in list.
- _Thread_record* _M_next;
-
- // Thread id ranging from 1 to _S_max_threads.
- size_t _M_id;
- };
-
- union _Block_record
- {
- // Points to the block_record of the next free block.
- _Block_record* _M_next;
-
- // The thread id of the thread which has requested this block.
- size_t _M_thread_id;
- };
-
- struct _Bin_record
- {
- // An "array" of pointers to the first free block for each
- // thread id. Memory to this "array" is allocated in
- // _S_initialize() for _S_max_threads + global pool 0.
- _Block_record** _M_first;
-
- // A list of the initial addresses of all allocated blocks.
- _Block_address* _M_address;
-
- // An "array" of counters used to keep track of the amount of
- // blocks that are on the freelist/used for each thread id.
- // - Note that the second part of the allocated _M_used "array"
- // actually hosts (atomic) counters of reclaimed blocks: in
- // _M_reserve_block and in _M_reclaim_block those numbers are
- // subtracted from the first ones to obtain the actual size
- // of the "working set" of the given thread.
- // - Memory to these "arrays" is allocated in _S_initialize()
- // for _S_max_threads + global pool 0.
- size_t* _M_free;
- size_t* _M_used;
-
- // Each bin has its own mutex which is used to ensure data
- // integrity while changing "ownership" on a block. The mutex
- // is initialized in _S_initialize().
- __gthread_mutex_t* _M_mutex;
- };
-
- // XXX GLIBCXX_ABI Deprecated
- void
- _M_initialize(__destroy_handler);
-
- void
- _M_initialize_once()
- {
- if (__builtin_expect(_M_init == false, false))
- _M_initialize();
- }
-
- void
- _M_destroy() throw();
-
- char*
- _M_reserve_block(size_t __bytes, const size_t __thread_id);
-
- void
- _M_reclaim_block(char* __p, size_t __bytes);
-
- const _Bin_record&
- _M_get_bin(size_t __which)
- { return _M_bin[__which]; }
-
- void
- _M_adjust_freelist(const _Bin_record& __bin, _Block_record* __block,
- size_t __thread_id)
- {
- if (__gthread_active_p())
- {
- __block->_M_thread_id = __thread_id;
- --__bin._M_free[__thread_id];
- ++__bin._M_used[__thread_id];
- }
- }
-
- // XXX GLIBCXX_ABI Deprecated
- void
- _M_destroy_thread_key(void*);
-
- size_t
- _M_get_thread_id();
-
- explicit __pool()
- : _M_bin(NULL), _M_bin_size(1), _M_thread_freelist(NULL)
- { }
-
- explicit __pool(const __pool_base::_Tune& __tune)
- : __pool_base(__tune), _M_bin(NULL), _M_bin_size(1),
- _M_thread_freelist(NULL)
- { }
-
- private:
- // An "array" of bin_records each of which represents a specific
- // power of 2 size. Memory to this "array" is allocated in
- // _M_initialize().
- _Bin_record* _M_bin;
-
- // Actual value calculated in _M_initialize().
- size_t _M_bin_size;
-
- _Thread_record* _M_thread_freelist;
- void* _M_thread_freelist_initial;
-
- void
- _M_initialize();
- };
-#endif
-
- template<template <bool> class _PoolTp, bool _Thread>
- struct __common_pool
- {
- typedef _PoolTp<_Thread> pool_type;
-
- static pool_type&
- _S_get_pool()
- {
- static pool_type _S_pool;
- return _S_pool;
- }
- };
-
- template<template <bool> class _PoolTp, bool _Thread>
- struct __common_pool_base;
-
- template<template <bool> class _PoolTp>
- struct __common_pool_base<_PoolTp, false>
- : public __common_pool<_PoolTp, false>
- {
- using __common_pool<_PoolTp, false>::_S_get_pool;
-
- static void
- _S_initialize_once()
- {
- static bool __init;
- if (__builtin_expect(__init == false, false))
- {
- _S_get_pool()._M_initialize_once();
- __init = true;
- }
- }
- };
-
-#ifdef __GTHREADS
- template<template <bool> class _PoolTp>
- struct __common_pool_base<_PoolTp, true>
- : public __common_pool<_PoolTp, true>
- {
- using __common_pool<_PoolTp, true>::_S_get_pool;
-
- static void
- _S_initialize()
- { _S_get_pool()._M_initialize_once(); }
-
- static void
- _S_initialize_once()
- {
- static bool __init;
- if (__builtin_expect(__init == false, false))
- {
- if (__gthread_active_p())
- {
- // On some platforms, __gthread_once_t is an aggregate.
- static __gthread_once_t __once = __GTHREAD_ONCE_INIT;
- __gthread_once(&__once, _S_initialize);
- }
-
- // Double check initialization. May be necessary on some
- // systems for proper construction when not compiling with
- // thread flags.
- _S_get_pool()._M_initialize_once();
- __init = true;
- }
- }
- };
-#endif
-
- /// Policy for shared __pool objects.
- template<template <bool> class _PoolTp, bool _Thread>
- struct __common_pool_policy : public __common_pool_base<_PoolTp, _Thread>
- {
- template<typename _Tp1, template <bool> class _PoolTp1 = _PoolTp,
- bool _Thread1 = _Thread>
- struct _M_rebind
- { typedef __common_pool_policy<_PoolTp1, _Thread1> other; };
-
- using __common_pool_base<_PoolTp, _Thread>::_S_get_pool;
- using __common_pool_base<_PoolTp, _Thread>::_S_initialize_once;
- };
-
-
- template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
- struct __per_type_pool
- {
- typedef _Tp value_type;
- typedef _PoolTp<_Thread> pool_type;
-
- static pool_type&
- _S_get_pool()
- {
- // Sane defaults for the _PoolTp.
- typedef typename pool_type::_Block_record _Block_record;
- const static size_t __a = (__alignof__(_Tp) >= sizeof(_Block_record)
- ? __alignof__(_Tp) : sizeof(_Block_record));
-
- typedef typename __pool_base::_Tune _Tune;
- static _Tune _S_tune(__a, sizeof(_Tp) * 64,
- sizeof(_Tp) * 2 >= __a ? sizeof(_Tp) * 2 : __a,
- sizeof(_Tp) * size_t(_Tune::_S_chunk_size),
- _Tune::_S_max_threads,
- _Tune::_S_freelist_headroom,
- std::getenv("GLIBCXX_FORCE_NEW") ? true : false);
- static pool_type _S_pool(_S_tune);
- return _S_pool;
- }
- };
-
- template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
- struct __per_type_pool_base;
-
- template<typename _Tp, template <bool> class _PoolTp>
- struct __per_type_pool_base<_Tp, _PoolTp, false>
- : public __per_type_pool<_Tp, _PoolTp, false>
- {
- using __per_type_pool<_Tp, _PoolTp, false>::_S_get_pool;
-
- static void
- _S_initialize_once()
- {
- static bool __init;
- if (__builtin_expect(__init == false, false))
- {
- _S_get_pool()._M_initialize_once();
- __init = true;
- }
- }
- };
-
- #ifdef __GTHREADS
- template<typename _Tp, template <bool> class _PoolTp>
- struct __per_type_pool_base<_Tp, _PoolTp, true>
- : public __per_type_pool<_Tp, _PoolTp, true>
- {
- using __per_type_pool<_Tp, _PoolTp, true>::_S_get_pool;
-
- static void
- _S_initialize()
- { _S_get_pool()._M_initialize_once(); }
-
- static void
- _S_initialize_once()
- {
- static bool __init;
- if (__builtin_expect(__init == false, false))
- {
- if (__gthread_active_p())
- {
- // On some platforms, __gthread_once_t is an aggregate.
- static __gthread_once_t __once = __GTHREAD_ONCE_INIT;
- __gthread_once(&__once, _S_initialize);
- }
-
- // Double check initialization. May be necessary on some
- // systems for proper construction when not compiling with
- // thread flags.
- _S_get_pool()._M_initialize_once();
- __init = true;
- }
- }
- };
-#endif
-
- /// Policy for individual __pool objects.
- template<typename _Tp, template <bool> class _PoolTp, bool _Thread>
- struct __per_type_pool_policy
- : public __per_type_pool_base<_Tp, _PoolTp, _Thread>
- {
- template<typename _Tp1, template <bool> class _PoolTp1 = _PoolTp,
- bool _Thread1 = _Thread>
- struct _M_rebind
- { typedef __per_type_pool_policy<_Tp1, _PoolTp1, _Thread1> other; };
-
- using __per_type_pool_base<_Tp, _PoolTp, _Thread>::_S_get_pool;
- using __per_type_pool_base<_Tp, _PoolTp, _Thread>::_S_initialize_once;
- };
-
-
- /// Base class for _Tp dependent member functions.
- template<typename _Tp>
- class __mt_alloc_base
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- pointer
- address(reference __x) const
- { return &__x; }
-
- const_pointer
- address(const_reference __x) const
- { return &__x; }
-
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 402. wrong new expression in [some_] allocator::construct
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) _Tp(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
-
-#ifdef __GTHREADS
-#define __thread_default true
-#else
-#define __thread_default false
-#endif
-
- /**
- * @brief This is a fixed size (power of 2) allocator which - when
- * compiled with thread support - will maintain one freelist per
- * size per thread plus a "global" one. Steps are taken to limit
- * the per thread freelist sizes (by returning excess back to
- * the "global" list).
- * @ingroup allocators
- *
- * Further details:
- * http://gcc.gnu.org/onlinedocs/libstdc++/manual/bk01pt12ch32.html
- */
- template<typename _Tp,
- typename _Poolp = __common_pool_policy<__pool, __thread_default> >
- class __mt_alloc : public __mt_alloc_base<_Tp>
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
- typedef _Poolp __policy_type;
- typedef typename _Poolp::pool_type __pool_type;
-
- template<typename _Tp1, typename _Poolp1 = _Poolp>
- struct rebind
- {
- typedef typename _Poolp1::template _M_rebind<_Tp1>::other pol_type;
- typedef __mt_alloc<_Tp1, pol_type> other;
- };
-
- __mt_alloc() throw() { }
-
- __mt_alloc(const __mt_alloc&) throw() { }
-
- template<typename _Tp1, typename _Poolp1>
- __mt_alloc(const __mt_alloc<_Tp1, _Poolp1>&) throw() { }
-
- ~__mt_alloc() throw() { }
-
- pointer
- allocate(size_type __n, const void* = 0);
-
- void
- deallocate(pointer __p, size_type __n);
-
- const __pool_base::_Tune
- _M_get_options()
- {
- // Return a copy, not a reference, for external consumption.
- return __policy_type::_S_get_pool()._M_get_options();
- }
-
- void
- _M_set_options(__pool_base::_Tune __t)
- { __policy_type::_S_get_pool()._M_set_options(__t); }
- };
-
- template<typename _Tp, typename _Poolp>
- typename __mt_alloc<_Tp, _Poolp>::pointer
- __mt_alloc<_Tp, _Poolp>::
- allocate(size_type __n, const void*)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- __policy_type::_S_initialize_once();
-
- // Requests larger than _M_max_bytes are handled by operator
- // new/delete directly.
- __pool_type& __pool = __policy_type::_S_get_pool();
- const size_t __bytes = __n * sizeof(_Tp);
- if (__pool._M_check_threshold(__bytes))
- {
- void* __ret = ::operator new(__bytes);
- return static_cast<_Tp*>(__ret);
- }
-
- // Round up to power of 2 and figure out which bin to use.
- const size_t __which = __pool._M_get_binmap(__bytes);
- const size_t __thread_id = __pool._M_get_thread_id();
-
- // Find out if we have blocks on our freelist. If so, go ahead
- // and use them directly without having to lock anything.
- char* __c;
- typedef typename __pool_type::_Bin_record _Bin_record;
- const _Bin_record& __bin = __pool._M_get_bin(__which);
- if (__bin._M_first[__thread_id])
- {
- // Already reserved.
- typedef typename __pool_type::_Block_record _Block_record;
- _Block_record* __block = __bin._M_first[__thread_id];
- __bin._M_first[__thread_id] = __block->_M_next;
-
- __pool._M_adjust_freelist(__bin, __block, __thread_id);
- __c = reinterpret_cast<char*>(__block) + __pool._M_get_align();
- }
- else
- {
- // Null, reserve.
- __c = __pool._M_reserve_block(__bytes, __thread_id);
- }
- return static_cast<_Tp*>(static_cast<void*>(__c));
- }
-
- template<typename _Tp, typename _Poolp>
- void
- __mt_alloc<_Tp, _Poolp>::
- deallocate(pointer __p, size_type __n)
- {
- if (__builtin_expect(__p != 0, true))
- {
- // Requests larger than _M_max_bytes are handled by
- // operators new/delete directly.
- __pool_type& __pool = __policy_type::_S_get_pool();
- const size_t __bytes = __n * sizeof(_Tp);
- if (__pool._M_check_threshold(__bytes))
- ::operator delete(__p);
- else
- __pool._M_reclaim_block(reinterpret_cast<char*>(__p), __bytes);
- }
- }
-
- template<typename _Tp, typename _Poolp>
- inline bool
- operator==(const __mt_alloc<_Tp, _Poolp>&, const __mt_alloc<_Tp, _Poolp>&)
- { return true; }
-
- template<typename _Tp, typename _Poolp>
- inline bool
- operator!=(const __mt_alloc<_Tp, _Poolp>&, const __mt_alloc<_Tp, _Poolp>&)
- { return false; }
-
-#undef __thread_default
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/new_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/new_allocator.h
deleted file mode 100644
index 290c73a11..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/new_allocator.h
+++ /dev/null
@@ -1,130 +0,0 @@
-// Allocator that wraps operator new -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/new_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _NEW_ALLOCATOR_H
-#define _NEW_ALLOCATOR_H 1
-
-#include <new>
-#include <bits/functexcept.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- /**
- * @brief An allocator that uses global new, as per [20.4].
- * @ingroup allocators
- *
- * This is precisely the allocator defined in the C++ Standard.
- * - all allocation calls operator new
- * - all deallocation calls operator delete
- */
- template<typename _Tp>
- class new_allocator
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef new_allocator<_Tp1> other; };
-
- new_allocator() throw() { }
-
- new_allocator(const new_allocator&) throw() { }
-
- template<typename _Tp1>
- new_allocator(const new_allocator<_Tp1>&) throw() { }
-
- ~new_allocator() throw() { }
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- // NB: __n is permitted to be 0. The C++ standard says nothing
- // about what the return value is when __n == 0.
- pointer
- allocate(size_type __n, const void* = 0)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- return static_cast<_Tp*>(::operator new(__n * sizeof(_Tp)));
- }
-
- // __p is not permitted to be a null pointer.
- void
- deallocate(pointer __p, size_type)
- { ::operator delete(__p); }
-
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 402. wrong new expression in [some_] allocator::construct
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) _Tp(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
- };
-
- template<typename _Tp>
- inline bool
- operator==(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return true; }
-
- template<typename _Tp>
- inline bool
- operator!=(const new_allocator<_Tp>&, const new_allocator<_Tp>&)
- { return false; }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/numeric b/gcc-4.4.3/libstdc++-v3/include/ext/numeric
deleted file mode 100644
index 5df5ee269..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/numeric
+++ /dev/null
@@ -1,146 +0,0 @@
-// Numeric extensions -*- C++ -*-
-
-// Copyright (C) 2002, 2004, 2005, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/numeric
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _EXT_NUMERIC
-#define _EXT_NUMERIC 1
-
-#pragma GCC system_header
-
-#include <bits/concept_check.h>
-#include <numeric>
-
-#include <ext/functional> // For identity_element
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Returns __x ** __n, where __n >= 0. _Note that "multiplication"
- // is required to be associative, but not necessarily commutative.
- template<typename _Tp, typename _Integer, typename _MonoidOperation>
- _Tp
- __power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op)
- {
- if (__n == 0)
- return identity_element(__monoid_op);
- else
- {
- while ((__n & 1) == 0)
- {
- __n >>= 1;
- __x = __monoid_op(__x, __x);
- }
-
- _Tp __result = __x;
- __n >>= 1;
- while (__n != 0)
- {
- __x = __monoid_op(__x, __x);
- if ((__n & 1) != 0)
- __result = __monoid_op(__result, __x);
- __n >>= 1;
- }
- return __result;
- }
- }
-
- template<typename _Tp, typename _Integer>
- inline _Tp
- __power(_Tp __x, _Integer __n)
- { return __power(__x, __n, std::multiplies<_Tp>()); }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- // Alias for the internal name __power. Note that power is an extension,
- // not part of the C++ standard.
- template<typename _Tp, typename _Integer, typename _MonoidOperation>
- inline _Tp
- power(_Tp __x, _Integer __n, _MonoidOperation __monoid_op)
- { return __power(__x, __n, __monoid_op); }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template<typename _Tp, typename _Integer>
- inline _Tp
- power(_Tp __x, _Integer __n)
- { return __power(__x, __n); }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- // iota is not part of the C++ standard. It is an extension.
- template<typename _ForwardIter, typename _Tp>
- void
- iota(_ForwardIter __first, _ForwardIter __last, _Tp __value)
- {
- // concept requirements
- __glibcxx_function_requires(_Mutable_ForwardIteratorConcept<_ForwardIter>)
- __glibcxx_function_requires(_ConvertibleConcept<_Tp,
- typename std::iterator_traits<_ForwardIter>::value_type>)
-
- while (__first != __last)
- *__first++ = __value++;
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/numeric_traits.h b/gcc-4.4.3/libstdc++-v3/include/ext/numeric_traits.h
deleted file mode 100644
index 57fcf9c1f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/numeric_traits.h
+++ /dev/null
@@ -1,135 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/numeric_traits.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _EXT_NUMERIC_TRAITS
-#define _EXT_NUMERIC_TRAITS 1
-
-#pragma GCC system_header
-
-#include <bits/cpp_type_traits.h>
-#include <ext/type_traits.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Compile time constants for builtin types.
- // Sadly std::numeric_limits member functions cannot be used for this.
-#define __glibcxx_signed(_Tp) ((_Tp)(-1) < 0)
-#define __glibcxx_digits(_Tp) \
- (sizeof(_Tp) * __CHAR_BIT__ - __glibcxx_signed(_Tp))
-
-#define __glibcxx_min(_Tp) \
- (__glibcxx_signed(_Tp) ? (_Tp)1 << __glibcxx_digits(_Tp) : (_Tp)0)
-
-#define __glibcxx_max(_Tp) \
- (__glibcxx_signed(_Tp) ? \
- (((((_Tp)1 << (__glibcxx_digits(_Tp) - 1)) - 1) << 1) + 1) : ~(_Tp)0)
-
- template<typename _Value>
- struct __numeric_traits_integer
- {
- // Only integers for initialization of member constant.
- static const _Value __min = __glibcxx_min(_Value);
- static const _Value __max = __glibcxx_max(_Value);
-
- // NB: these two also available in std::numeric_limits as compile
- // time constants, but <limits> is big and we avoid including it.
- static const bool __is_signed = __glibcxx_signed(_Value);
- static const int __digits = __glibcxx_digits(_Value);
- };
-
- template<typename _Value>
- const _Value __numeric_traits_integer<_Value>::__min;
-
- template<typename _Value>
- const _Value __numeric_traits_integer<_Value>::__max;
-
- template<typename _Value>
- const bool __numeric_traits_integer<_Value>::__is_signed;
-
- template<typename _Value>
- const int __numeric_traits_integer<_Value>::__digits;
-
-#undef __glibcxx_signed
-#undef __glibcxx_digits
-#undef __glibcxx_min
-#undef __glibcxx_max
-
-#define __glibcxx_floating(_Tp, _Fval, _Dval, _LDval) \
- (std::__are_same<_Tp, float>::__value ? _Fval \
- : std::__are_same<_Tp, double>::__value ? _Dval : _LDval)
-
-#define __glibcxx_max_digits10(_Tp) \
- (2 + __glibcxx_floating(_Tp, __FLT_MANT_DIG__, __DBL_MANT_DIG__, \
- __LDBL_MANT_DIG__) * 3010 / 10000)
-
-#define __glibcxx_digits10(_Tp) \
- __glibcxx_floating(_Tp, __FLT_DIG__, __DBL_DIG__, __LDBL_DIG__)
-
-#define __glibcxx_max_exponent10(_Tp) \
- __glibcxx_floating(_Tp, __FLT_MAX_10_EXP__, __DBL_MAX_10_EXP__, \
- __LDBL_MAX_10_EXP__)
-
- template<typename _Value>
- struct __numeric_traits_floating
- {
- // Only floating point types. See N1822.
- static const int __max_digits10 = __glibcxx_max_digits10(_Value);
-
- // See above comment...
- static const bool __is_signed = true;
- static const int __digits10 = __glibcxx_digits10(_Value);
- static const int __max_exponent10 = __glibcxx_max_exponent10(_Value);
- };
-
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__max_digits10;
-
- template<typename _Value>
- const bool __numeric_traits_floating<_Value>::__is_signed;
-
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__digits10;
-
- template<typename _Value>
- const int __numeric_traits_floating<_Value>::__max_exponent10;
-
- template<typename _Value>
- struct __numeric_traits
- : public __conditional_type<std::__is_integer<_Value>::__value,
- __numeric_traits_integer<_Value>,
- __numeric_traits_floating<_Value> >::__type
- { };
-
-_GLIBCXX_END_NAMESPACE
-
-#undef __glibcxx_floating
-#undef __glibcxx_max_digits10
-#undef __glibcxx_digits10
-#undef __glibcxx_max_exponent10
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
deleted file mode 100644
index 7bccb88ff..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/assoc_container.hpp
+++ /dev/null
@@ -1,683 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file assoc_container.hpp
- * Contains associative containers.
- */
-
-#ifndef PB_DS_ASSOC_CNTNR_HPP
-#define PB_DS_ASSOC_CNTNR_HPP
-
-#include <ext/typelist.h>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/standard_policies.hpp>
-#include <ext/pb_ds/detail/container_base_dispatch.hpp>
-#include <ext/pb_ds/detail/basic_tree_policy/traits.hpp>
-
-namespace __gnu_pbds
-{
-#define PB_DS_BASE_C_DEC \
- detail::container_base_dispatch<Key, Mapped, Tag, Policy_Tl, Allocator>::type
-
- // An abstract basic associative container.
- template<typename Key,
- typename Mapped,
- typename Tag,
- typename Policy_Tl,
- typename Allocator>
- class container_base : public PB_DS_BASE_C_DEC
- {
- private:
- typedef typename PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Tag container_category;
- typedef Allocator allocator_type;
- typedef typename allocator_type::size_type size_type;
- typedef typename allocator_type::difference_type difference_type;
-
- // key_type
- typedef typename allocator_type::template rebind<Key>::other::value_type key_type;
- typedef typename allocator_type::template rebind<key_type>::other key_rebind;
- typedef typename key_rebind::reference key_reference;
- typedef typename key_rebind::const_reference const_key_reference;
- typedef typename key_rebind::pointer key_pointer;
- typedef typename key_rebind::const_pointer const_key_pointer;
-
- // mapped_type
- typedef Mapped mapped_type;
- typedef typename allocator_type::template rebind<mapped_type>::other mapped_rebind;
- typedef typename mapped_rebind::reference mapped_reference;
- typedef typename mapped_rebind::const_reference const_mapped_reference;
- typedef typename mapped_rebind::pointer mapped_pointer;
- typedef typename mapped_rebind::const_pointer const_mapped_pointer;
-
- // value_type
- typedef typename base_type::value_type value_type;
- typedef typename allocator_type::template rebind<value_type>::other value_rebind;
- typedef typename value_rebind::reference reference;
- typedef typename value_rebind::const_reference const_reference;
- typedef typename value_rebind::pointer pointer;
- typedef typename value_rebind::const_pointer const_pointer;
-
- // iterators
- typedef typename base_type::iterator iterator;
- typedef typename base_type::const_iterator const_iterator;
- typedef typename base_type::point_iterator point_iterator;
- typedef typename base_type::const_point_iterator const_point_iterator;
-
- virtual
- ~container_base() { }
-
- protected:
-#define PB_DS_CLASS_NAME container_base
-#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
-#undef PB_DS_CLASS_NAME
- };
-
-#undef PB_DS_BASE_C_DEC
-
-
-#define PB_DS_BASE_C_DEC \
- container_base<Key, Mapped, Tag, typename __gnu_cxx::typelist::append< \
- typename __gnu_cxx::typelist::create4<Hash_Fn, Eq_Fn, Resize_Policy, detail::integral_constant<int, Store_Hash> >::type, Policy_TL>::type, Allocator>
-
- // An abstract basic hash-based associative container.
- template<typename Key,
- typename Mapped,
- typename Hash_Fn,
- typename Eq_Fn,
- typename Resize_Policy,
- bool Store_Hash,
- typename Tag,
- typename Policy_TL,
- typename Allocator>
- class basic_hash_table : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- virtual
- ~basic_hash_table() { }
-
- protected:
-#define PB_DS_CLASS_NAME basic_hash_table
-#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
-#undef PB_DS_CLASS_NAME
-
- private:
- basic_hash_table&
- operator=(const base_type&);
- };
-
-#undef PB_DS_BASE_C_DEC
-
-
-#define PB_DS_BASE_C_DEC \
- basic_hash_table<Key, Mapped, Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
- cc_hash_tag, \
- typename __gnu_cxx::typelist::create1<Comb_Hash_Fn>::type, Allocator>
-
- // A concrete collision-chaining hash-based associative container.
- template<typename Key,
- typename Mapped,
- typename Hash_Fn = typename detail::default_hash_fn<Key>::type,
- typename Eq_Fn = typename detail::default_eq_fn<Key>::type,
- typename Comb_Hash_Fn = detail::default_comb_hash_fn::type,
- typename Resize_Policy = typename detail::default_resize_policy<Comb_Hash_Fn>::type,
- bool Store_Hash = detail::default_store_hash,
- typename Allocator = std::allocator<char> >
- class cc_hash_table : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Hash_Fn hash_fn;
- typedef Eq_Fn eq_fn;
- typedef Resize_Policy resize_policy;
- typedef Comb_Hash_Fn comb_hash_fn;
-
- // Default constructor.
- cc_hash_table() { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the Hash_Fn object of the container object.
- cc_hash_table(const hash_fn& h)
- : base_type(h) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, and
- // r_eq_fn will be copied by the eq_fn object of the container
- // object.
- cc_hash_table(const hash_fn& h, const eq_fn& e)
- : base_type(h, e) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, r_eq_fn
- // will be copied by the eq_fn object of the container object, and
- // r_comb_hash_fn will be copied by the comb_hash_fn object of the
- // container object.
- cc_hash_table(const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch)
- : base_type(h, e, ch) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, r_eq_fn
- // will be copied by the eq_fn object of the container object,
- // r_comb_hash_fn will be copied by the comb_hash_fn object of the
- // container object, and r_resize_policy will be copied by the
- // resize_policy object of the container object.
- cc_hash_table(const hash_fn& h, const eq_fn& e, const comb_hash_fn& ch,
- const resize_policy& rp)
- : base_type(h, e, ch, rp) { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- cc_hash_table(It first, It last)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object.
- template<typename It>
- cc_hash_table(It first, It last, const hash_fn& h)
- : base_type(h)
- { copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // and r_eq_fn will be copied by the eq_fn object of the container
- // object.
- template<typename It>
- cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e)
- : base_type(h, e)
- { copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // r_eq_fn will be copied by the eq_fn object of the container
- // object, and r_comb_hash_fn will be copied by the comb_hash_fn
- // object of the container object.
- template<typename It>
- cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
- const comb_hash_fn& ch)
- : base_type(h, e, ch)
- { copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // r_eq_fn will be copied by the eq_fn object of the container
- // object, r_comb_hash_fn will be copied by the comb_hash_fn
- // object of the container object, and r_resize_policy will be
- // copied by the resize_policy object of the container object.
- template<typename It>
- cc_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
- const comb_hash_fn& ch, const resize_policy& rp)
- : base_type(h, e, ch, rp)
- { copy_from_range(first, last); }
-
- cc_hash_table(const cc_hash_table& other)
- : base_type((const base_type&)other)
- { }
-
- virtual
- ~cc_hash_table() { }
-
- cc_hash_table&
- operator=(const cc_hash_table& other)
- {
- if (this != &other)
- {
- cc_hash_table tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(cc_hash_table& other)
- { base_type::swap(other); }
- };
-
-#undef PB_DS_BASE_C_DEC
-
-
-#define PB_DS_BASE_C_DEC \
- basic_hash_table<Key, Mapped, Hash_Fn, Eq_Fn, Resize_Policy, Store_Hash, \
- gp_hash_tag, \
- typename __gnu_cxx::typelist::create2<Comb_Probe_Fn, Probe_Fn>::type, Allocator>
-
- // A concrete general-probing hash-based associative container.
- template<typename Key,
- typename Mapped,
- typename Hash_Fn = typename detail::default_hash_fn<Key>::type,
- typename Eq_Fn = typename detail::default_eq_fn<Key>::type,
- typename Comb_Probe_Fn = detail::default_comb_hash_fn::type,
- typename Probe_Fn = typename detail::default_probe_fn<Comb_Probe_Fn>::type,
- typename Resize_Policy = typename detail::default_resize_policy<Comb_Probe_Fn>::type,
- bool Store_Hash = detail::default_store_hash,
- typename Allocator = std::allocator<char> >
- class gp_hash_table : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Hash_Fn hash_fn;
- typedef Eq_Fn eq_fn;
- typedef Comb_Probe_Fn comb_probe_fn;
- typedef Probe_Fn probe_fn;
- typedef Resize_Policy resize_policy;
-
- // Default constructor.
- gp_hash_table() { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object.
- gp_hash_table(const hash_fn& h)
- : base_type(h) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, and
- // r_eq_fn will be copied by the eq_fn object of the container
- // object.
- gp_hash_table(const hash_fn& h, const eq_fn& e)
- : base_type(h, e) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, r_eq_fn
- // will be copied by the eq_fn object of the container object, and
- // r_comb_probe_fn will be copied by the comb_probe_fn object of
- // the container object.
- gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp)
- : base_type(h, e, cp) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, r_eq_fn
- // will be copied by the eq_fn object of the container object,
- // r_comb_probe_fn will be copied by the comb_probe_fn object of
- // the container object, and r_probe_fn will be copied by the
- // probe_fn object of the container object.
- gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp,
- const probe_fn& p)
- : base_type(h, e, cp, p) { }
-
- // Constructor taking some policy objects. r_hash_fn will be
- // copied by the hash_fn object of the container object, r_eq_fn
- // will be copied by the eq_fn object of the container object,
- // r_comb_probe_fn will be copied by the comb_probe_fn object of
- // the container object, r_probe_fn will be copied by the probe_fn
- // object of the container object, and r_resize_policy will be
- // copied by the Resize_Policy object of the container object.
- gp_hash_table(const hash_fn& h, const eq_fn& e, const comb_probe_fn& cp,
- const probe_fn& p, const resize_policy& rp)
- : base_type(h, e, cp, p, rp) { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- gp_hash_table(It first, It last)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object.
- template<typename It>
- gp_hash_table(It first, It last, const hash_fn& h)
- : base_type(h)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // and r_eq_fn will be copied by the eq_fn object of the container
- // object.
- template<typename It>
- gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e)
- : base_type(h, e)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // r_eq_fn will be copied by the eq_fn object of the container
- // object, and r_comb_probe_fn will be copied by the comb_probe_fn
- // object of the container object.
- template<typename It>
- gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
- const comb_probe_fn& cp)
- : base_type(h, e, cp)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // r_eq_fn will be copied by the eq_fn object of the container
- // object, r_comb_probe_fn will be copied by the comb_probe_fn
- // object of the container object, and r_probe_fn will be copied
- // by the probe_fn object of the container object.
- template<typename It>
- gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
- const comb_probe_fn& cp, const probe_fn& p)
- : base_type(h, e, cp, p)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object. r_hash_fn
- // will be copied by the hash_fn object of the container object,
- // r_eq_fn will be copied by the eq_fn object of the container
- // object, r_comb_probe_fn will be copied by the comb_probe_fn
- // object of the container object, r_probe_fn will be copied by
- // the probe_fn object of the container object, and
- // r_resize_policy will be copied by the resize_policy object of
- // the container object.
- template<typename It>
- gp_hash_table(It first, It last, const hash_fn& h, const eq_fn& e,
- const comb_probe_fn& cp, const probe_fn& p,
- const resize_policy& rp)
- : base_type(h, e, cp, p, rp)
- { base_type::copy_from_range(first, last); }
-
- gp_hash_table(const gp_hash_table& other)
- : base_type((const base_type&)other)
- { }
-
- virtual
- ~gp_hash_table() { }
-
- gp_hash_table&
- operator=(const gp_hash_table& other)
- {
- if (this != &other)
- {
- gp_hash_table tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(gp_hash_table& other)
- { base_type::swap(other); }
- };
-
-#undef PB_DS_BASE_C_DEC
-
-
-#define PB_DS_BASE_C_DEC \
- container_base<Key, Mapped, Tag, Policy_Tl, Allocator>
-
- // An abstract basic tree-like (tree, trie) associative container.
- template<typename Key, typename Mapped, typename Tag,
- typename Node_Update, typename Policy_Tl, typename Allocator>
- class basic_tree : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Node_Update node_update;
-
- virtual
- ~basic_tree() { }
-
- protected:
-#define PB_DS_CLASS_NAME basic_tree
-#include <ext/pb_ds/detail/constructors_destructor_fn_imps.hpp>
-#undef PB_DS_CLASS_NAME
- };
-
-#undef PB_DS_BASE_C_DEC
-
-
-#define PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC \
- detail::tree_traits<Key, Mapped,Cmp_Fn,Node_Update,Tag, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- basic_tree<Key,Mapped,Tag,typename PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC::node_update, \
- typename __gnu_cxx::typelist::create2<Cmp_Fn, PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC >::type, Allocator>
-
- // A concrete basic tree-based associative container.
- template<typename Key, typename Mapped, typename Cmp_Fn = std::less<Key>,
- typename Tag = rb_tree_tag,
- template<typename Const_Node_Iterator, typename Node_Iterator, typename Cmp_Fn_, typename Allocator_>
- class Node_Update = __gnu_pbds::null_tree_node_update,
- typename Allocator = std::allocator<char> >
- class tree : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- // Comparison functor type.
- typedef Cmp_Fn cmp_fn;
-
- tree() { }
-
- // Constructor taking some policy objects. r_cmp_fn will be copied
- // by the Cmp_Fn object of the container object.
- tree(const cmp_fn& c)
- : base_type(c) { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- tree(It first, It last)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects The value_types between first_it and
- // last_it will be inserted into the container object. r_cmp_fn
- // will be copied by the cmp_fn object of the container object.
- template<typename It>
- tree(It first, It last, const cmp_fn& c)
- : base_type(c)
- { base_type::copy_from_range(first, last); }
-
- tree(const tree& other)
- : base_type((const base_type&)other) { }
-
- virtual
- ~tree() { }
-
- tree&
- operator=(const tree& other)
- {
- if (this != &other)
- {
- tree tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(tree& other)
- { base_type::swap(other); }
- };
-
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_TREE_NODE_AND_IT_TRAITS_C_DEC
-
-
-#define PB_DS_TRIE_NODE_AND_ITS_TRAITS \
- detail::trie_traits<Key,Mapped,E_Access_Traits,Node_Update,Tag,Allocator>
-
-#define PB_DS_BASE_C_DEC \
- basic_tree<Key,Mapped,Tag, typename PB_DS_TRIE_NODE_AND_ITS_TRAITS::node_update, \
- typename __gnu_cxx::typelist::create2<E_Access_Traits, PB_DS_TRIE_NODE_AND_ITS_TRAITS >::type, Allocator>
-
- // A concrete basic trie-based associative container.
- template<typename Key,
- typename Mapped,
- typename E_Access_Traits = typename detail::default_trie_e_access_traits<Key>::type,
- typename Tag = pat_trie_tag,
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename E_Access_Traits_,
- typename Allocator_>
- class Node_Update = null_trie_node_update,
- typename Allocator = std::allocator<char> >
- class trie : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- // Element access traits type.
- typedef E_Access_Traits e_access_traits;
-
- trie() { }
-
- // Constructor taking some policy objects. r_e_access_traits will
- // be copied by the E_Access_Traits object of the container
- // object.
- trie(const e_access_traits& t)
- : base_type(t) { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- trie(It first, It last)
- { base_type::copy_from_range(first, last); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects. The value_types between first_it and
- // last_it will be inserted into the container object.
- template<typename It>
- trie(It first, It last, const e_access_traits& t)
- : base_type(t)
- { base_type::copy_from_range(first, last); }
-
- trie(const trie& other)
- : base_type((const base_type&)other) { }
-
- virtual
- ~trie() { }
-
- trie&
- operator=(const trie& other)
- {
- if (this != &other)
- {
- trie tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(trie& other)
- { base_type::swap(other); }
- };
-
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_TRIE_NODE_AND_ITS_TRAITS
-
-
-#define PB_DS_BASE_C_DEC \
- container_base<Key, Mapped, list_update_tag, \
- typename __gnu_cxx::typelist::create2<Eq_Fn, Update_Policy>::type, Allocator>
-
- // A list-update based associative container.
- template<typename Key,
- typename Mapped,
- class Eq_Fn = typename detail::default_eq_fn<Key>::type,
- class Update_Policy = detail::default_update_policy::type,
- class Allocator = std::allocator<char> >
- class list_update : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Eq_Fn eq_fn;
- typedef Update_Policy update_policy;
- typedef Allocator allocator;
-
- list_update() { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- list_update(It first, It last)
- { base_type::copy_from_range(first, last); }
-
- list_update(const list_update& other)
- : base_type((const base_type&)other) { }
-
- virtual
- ~list_update() { }
-
- list_update&
- operator=(const list_update& other)
- {
- if (this !=& other)
- {
- list_update tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(list_update& other)
- { base_type::swap(other); }
- };
-
-#undef PB_DS_BASE_C_DEC
-
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
deleted file mode 100644
index 0ca90dbc7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp
+++ /dev/null
@@ -1,173 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file basic_tree_policy_base.hpp
- * Contains a base class for tree_like policies.
- */
-
-#ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP
-#define PB_DS_TREE_LIKE_POLICY_BASE_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_C_DEC \
- basic_tree_policy_base< \
- Const_Node_Iterator, \
- Node_Iterator, \
- Allocator>
-
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename Allocator>
- struct basic_tree_policy_base
- {
- protected:
- typedef typename Node_Iterator::value_type it_type;
-
- typedef typename std::iterator_traits< it_type>::value_type value_type;
-
- typedef typename value_type::first_type key_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- key_type>::type>::other::const_reference
- const_key_reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::const_reference
- const_reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::const_pointer
- const_pointer;
-
- static inline const_key_reference
- extract_key(const_reference r_val)
- {
- return (r_val.first);
- }
-
- virtual it_type
- end() = 0;
-
- it_type
- end_iterator() const
- {
- return (const_cast<PB_DS_CLASS_C_DEC* >(this)->end());
- }
-
- virtual
- ~basic_tree_policy_base()
- { }
- };
-
- template<typename Const_Node_Iterator, typename Allocator>
- struct basic_tree_policy_base<
- Const_Node_Iterator,
- Const_Node_Iterator,
- Allocator>
- {
- protected:
- typedef typename Const_Node_Iterator::value_type it_type;
-
- typedef typename std::iterator_traits< it_type>::value_type value_type;
-
- typedef value_type key_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- key_type>::type>::other::const_reference
- const_key_reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::const_reference
- const_reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- value_type>::type>::other::const_pointer
- const_pointer;
-
- static inline const_key_reference
- extract_key(const_reference r_val)
- {
- return (r_val);
- }
-
- virtual it_type
- end() const = 0;
-
- it_type
- end_iterator() const
- {
- return (end());
- }
-
- virtual
- ~basic_tree_policy_base()
- { }
- };
-
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_TREE_LIKE_POLICY_BASE_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
deleted file mode 100644
index 757b90956..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file null_node_metadata.hpp
- * Contains an implementation class for tree-like classes.
- */
-
-#ifndef PB_DS_NULL_NODE_METADATA_HPP
-#define PB_DS_NULL_NODE_METADATA_HPP
-
-#include <ext/pb_ds/detail/types_traits.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, class Data, class Allocator>
- struct dumconst_node_iterator
- {
- private:
- typedef typename types_traits<Key, Data, Allocator, false>::pointer const_iterator;
-
- public:
- typedef const_iterator value_type;
- typedef const_iterator const_reference;
- typedef const_reference reference;
- };
-
- struct null_node_metadata
- { };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp
deleted file mode 100644
index b30829a81..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_tree_policy/traits.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation class for tree-like classes.
- */
-
-#ifndef PB_DS_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/traits.hpp>
-#include <ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp>
-#include <ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key,
- typename Data,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator>
- class Node_Update,
- class Tag,
- class Allocator>
- struct tree_traits;
-
- template<typename Key,
- typename Data,
- class E_Access_Traits,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class E_Access_Traits_,
- class Allocator>
- class Node_Update,
- class Tag,
- class Allocator>
- struct trie_traits;
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#include <ext/pb_ds/detail/rb_tree_map_/traits.hpp>
-#include <ext/pb_ds/detail/splay_tree_/traits.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/traits.hpp>
-#include <ext/pb_ds/detail/pat_trie_/traits.hpp>
-
-#endif // #ifndef PB_DS_NODE_AND_IT_TRAITS_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp
deleted file mode 100644
index aac1397dd..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/basic_types.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file basic_types.hpp
- * Contains basic types used by containers.
- */
-
-#ifndef PB_DS_BASIC_TYPES_HPP
-#define PB_DS_BASIC_TYPES_HPP
-
-#include <algorithm>
-#include <utility>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, typename Mapped, typename Allocator, bool Store_Hash>
- struct value_type_base;
-
- /**
- * Specialization of value_type_base for the case where the hash value
- * is not stored alongside each value.
- **/
- template<typename Key, typename Mapped, typename Allocator>
- struct value_type_base<Key, Mapped, Allocator, false>
- {
- typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator;
- typedef typename mapped_type_allocator::value_type mapped_type;
- typedef typename mapped_type_allocator::pointer mapped_pointer;
- typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
- typedef typename mapped_type_allocator::reference mapped_reference;
- typedef typename mapped_type_allocator::const_reference const_mapped_reference;
-
- typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator;
- typedef typename value_type_allocator::value_type value_type;
- typedef typename value_type_allocator::pointer pointer;
- typedef typename value_type_allocator::const_pointer const_pointer;
- typedef typename value_type_allocator::reference reference;
- typedef typename value_type_allocator::const_reference const_reference;
-
- struct stored_value_type
- {
- value_type m_value;
- };
- };
-
- /**
- * Specialization of value_type_base for the case where the hash value
- * is stored alongside each value.
- **/
- template<typename Key, typename Mapped, typename Allocator>
- struct value_type_base<Key, Mapped, Allocator, true>
- {
- typedef typename Allocator::template rebind<Mapped>::other mapped_type_allocator;
- typedef typename mapped_type_allocator::value_type mapped_type;
- typedef typename mapped_type_allocator::pointer mapped_pointer;
- typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
- typedef typename mapped_type_allocator::reference mapped_reference;
- typedef typename mapped_type_allocator::const_reference const_mapped_reference;
-
- typedef typename Allocator::template rebind<std::pair<const Key, Mapped> >::other value_type_allocator;
- typedef typename value_type_allocator::value_type value_type;
- typedef typename value_type_allocator::pointer pointer;
- typedef typename value_type_allocator::const_pointer const_pointer;
- typedef typename value_type_allocator::reference reference;
- typedef typename value_type_allocator::const_reference const_reference;
-
- struct stored_value_type
- {
- value_type m_value;
- typename Allocator::size_type m_hash;
- };
- };
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- value_type_base<Key, null_mapped_type, Allocator, false>
-
- /**
- * Specialization of value_type_base for the case where the hash value
- * is not stored alongside each value.
- **/
- template<typename Key, typename Allocator>
- struct value_type_base<Key, null_mapped_type, Allocator, false>
- {
- typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator;
- typedef typename mapped_type_allocator::value_type mapped_type;
- typedef typename mapped_type_allocator::pointer mapped_pointer;
- typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
- typedef typename mapped_type_allocator::reference mapped_reference;
- typedef typename mapped_type_allocator::const_reference const_mapped_reference;
-
- typedef Key value_type;
-
- typedef typename Allocator::template rebind<value_type>::other value_type_allocator;
- typedef typename value_type_allocator::pointer pointer;
- typedef typename value_type_allocator::const_pointer const_pointer;
- typedef typename value_type_allocator::reference reference;
- typedef typename value_type_allocator::const_reference const_reference;
-
- struct stored_value_type
- {
- value_type m_value;
- };
-
- static null_mapped_type s_null_mapped;
- };
-
- PB_DS_CLASS_T_DEC
- null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped;
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- value_type_base<Key, null_mapped_type, Allocator, true>
-
- /**
- * Specialization of value_type_base for the case where the hash value
- * is stored alongside each value.
- **/
- template<typename Key, typename Allocator>
- struct value_type_base<Key, null_mapped_type, Allocator, true>
- {
- typedef typename Allocator::template rebind<null_mapped_type>::other mapped_type_allocator;
- typedef typename mapped_type_allocator::value_type mapped_type;
- typedef typename mapped_type_allocator::pointer mapped_pointer;
- typedef typename mapped_type_allocator::const_pointer const_mapped_pointer;
- typedef typename mapped_type_allocator::reference mapped_reference;
- typedef typename mapped_type_allocator::const_reference const_mapped_reference;
-
- typedef Key value_type;
-
- typedef typename Allocator::template rebind<value_type>::other value_type_allocator;
- typedef typename value_type_allocator::pointer pointer;
- typedef typename value_type_allocator::const_pointer const_pointer;
- typedef typename value_type_allocator::reference reference;
- typedef typename value_type_allocator::const_reference const_reference;
-
- struct stored_value_type
- {
- value_type m_value;
- typename Allocator::size_type m_hash;
- };
-
- static null_mapped_type s_null_mapped;
- };
-
- PB_DS_CLASS_T_DEC
- null_mapped_type PB_DS_CLASS_C_DEC::s_null_mapped;
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- template<typename Key, typename Mapped>
- struct no_throw_copies
- {
- typedef integral_constant<int, is_simple<Key>::value && is_simple<Mapped>::value> indicator;
- };
-
- template<typename Key>
- struct no_throw_copies<Key, null_mapped_type>
- {
- typedef integral_constant<int, is_simple<Key>::value> indicator;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
deleted file mode 100644
index 7315d951f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp
+++ /dev/null
@@ -1,497 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file bin_search_tree_.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-/*
- * This implementation uses an idea from the SGI STL (using a "header" node
- * which is needed for efficient iteration).
- */
-
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#include <ext/pb_ds/tree_policy.hpp>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/tree_trace_base.hpp>
-#include <utility>
-#include <functional>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, class Cmp_Fn, \
- class Node_And_It_Traits, class Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME \
- bin_search_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME \
- bin_search_tree_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME< \
- Key, \
- Mapped, \
- Cmp_Fn, \
- Node_And_It_Traits, \
- Allocator>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits< \
- Key, \
- Mapped, \
- Allocator, \
- false>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
- typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
-#ifdef PB_DS_TREE_TRACE
-#define PB_DS_TREE_TRACE_BASE_C_DEC \
- tree_trace_base< \
- typename Node_And_It_Traits::const_node_iterator, \
- typename Node_And_It_Traits::node_iterator, \
- Cmp_Fn, \
- true, \
- Allocator>
-#endif
-
- /**
- * class description = "8i|\|4ree $34rc|-| 7r33 74813.">
- **/
- template<typename Key,
- typename Mapped,
- class Cmp_Fn,
- class Node_And_It_Traits,
- class Allocator>
- class PB_DS_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- public PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
-#ifdef PB_DS_TREE_TRACE
- public PB_DS_TREE_TRACE_BASE_C_DEC,
-#endif
- public Cmp_Fn,
- public PB_DS_TYPES_TRAITS_C_DEC,
- public Node_And_It_Traits::node_update
- {
-
- protected:
- typedef
- typename Allocator::template rebind<
- typename Node_And_It_Traits::node>::other
- node_allocator;
-
- typedef typename node_allocator::value_type node;
-
- typedef typename node_allocator::pointer node_pointer;
-
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
-
- typedef
- typename Node_And_It_Traits::null_node_update_pointer
- null_node_update_pointer;
-
- private:
- typedef cond_dealtor< node, Allocator> cond_dealtor_t;
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_type key_type;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_pointer key_pointer;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::const_key_pointer
- const_key_pointer;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::key_reference key_reference;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::const_key_reference
- const_key_reference;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::mapped_type mapped_type;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::mapped_pointer
- mapped_pointer;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_pointer
- const_mapped_pointer;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::mapped_reference
- mapped_reference;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::const_mapped_reference
- const_mapped_reference;
-#endif
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::value_type value_type;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::pointer pointer;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::const_pointer const_pointer;
-
- typedef typename PB_DS_TYPES_TRAITS_C_DEC::reference reference;
-
- typedef
- typename PB_DS_TYPES_TRAITS_C_DEC::const_reference
- const_reference;
-
- typedef
- typename Node_And_It_Traits::const_point_iterator
- const_point_iterator;
-
- typedef const_point_iterator const_iterator;
-
- typedef typename Node_And_It_Traits::point_iterator point_iterator;
-
- typedef point_iterator iterator;
-
- typedef
- typename Node_And_It_Traits::const_reverse_iterator
- const_reverse_iterator;
-
- typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator;
-
- typedef
- typename Node_And_It_Traits::const_node_iterator
- const_node_iterator;
-
- typedef typename Node_And_It_Traits::node_iterator node_iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
- typedef typename Node_And_It_Traits::node_update node_update;
-
- public:
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn);
-
- PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_update);
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~PB_DS_CLASS_NAME();
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- Cmp_Fn&
- get_cmp_fn();
-
- const Cmp_Fn&
- get_cmp_fn() const;
-
- inline point_iterator
- lower_bound(const_key_reference r_key);
-
- inline const_point_iterator
- lower_bound(const_key_reference r_key) const;
-
- inline point_iterator
- upper_bound(const_key_reference r_key);
-
- inline const_point_iterator
- upper_bound(const_key_reference r_key) const;
-
- inline point_iterator
- find(const_key_reference r_key);
-
- inline const_point_iterator
- find(const_key_reference r_key) const;
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
- inline reverse_iterator
- rbegin();
-
- inline const_reverse_iterator
- rbegin() const;
-
- inline reverse_iterator
- rend();
-
- inline const_reverse_iterator
- rend() const;
-
- inline const_node_iterator
- node_begin() const;
-
- inline node_iterator
- node_begin();
-
- inline const_node_iterator
- node_end() const;
-
- inline node_iterator
- node_end();
-
- void
- clear();
-
- protected:
-
- void
- value_swap(PB_DS_CLASS_C_DEC& other);
-
- void
- initialize_min_max();
-
- inline iterator
- insert_imp_empty(const_reference r_value);
-
- inline iterator
- insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd);
-
- inline node_pointer
- get_new_node_for_leaf_insert(const_reference r_val, false_type);
-
- inline node_pointer
- get_new_node_for_leaf_insert(const_reference r_val, true_type);
-
- inline void
- actual_erase_node(node_pointer p_nd);
-
- inline std::pair<node_pointer, bool>
- erase(node_pointer p_nd);
-
- inline void
- update_min_max_for_erased_node(node_pointer p_nd);
-
- static void
- clear_imp(node_pointer p_nd);
-
- inline std::pair<
- point_iterator,
- bool>
- insert_leaf(const_reference r_value);
-
- inline void
- rotate_left(node_pointer p_x);
-
- inline void
- rotate_right(node_pointer p_y);
-
- inline void
- rotate_parent(node_pointer p_nd);
-
- inline void
- apply_update(node_pointer p_nd, null_node_update_pointer);
-
- template<typename Node_Update_>
- inline void
- apply_update(node_pointer p_nd, Node_Update_* p_update);
-
- inline void
- update_to_top(node_pointer p_nd, null_node_update_pointer);
-
- template<typename Node_Update_>
- inline void
- update_to_top(node_pointer p_nd, Node_Update_* p_update);
-
- bool
- join_prep(PB_DS_CLASS_C_DEC& other);
-
- void
- join_finish(PB_DS_CLASS_C_DEC& other);
-
- bool
- split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other);
-
- void
- split_finish(PB_DS_CLASS_C_DEC& other);
-
- size_type
- recursive_count(node_pointer p_nd) const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- structure_only_assert_valid() const;
-
- void
- assert_node_consistent(const node_pointer p_nd) const;
-#endif
-
- private:
-#ifdef _GLIBCXX_DEBUG
- void
- assert_iterators() const;
-
- void
- assert_consistent_with_debug_base() const;
-
- void
- assert_node_consistent_with_left(const node_pointer p_nd) const;
-
- void
- assert_node_consistent_with_right(const node_pointer p_nd) const;
-
- void
- assert_consistent_with_debug_base(const node_pointer p_nd) const;
-
- void
- assert_min() const;
-
- void
- assert_min_imp(const node_pointer p_nd) const;
-
- void
- assert_max() const;
-
- void
- assert_max_imp(const node_pointer p_nd) const;
-
- void
- assert_size() const;
-
- typedef std::pair< const_pointer, const_pointer> node_consistent_t;
-
- node_consistent_t
- assert_node_consistent_(const node_pointer p_nd) const;
-#endif
-
- void
- initialize();
-
- node_pointer
- recursive_copy_node(const node_pointer p_nd);
-
- protected:
- node_pointer m_p_head;
-
- size_type m_size;
-
- static node_allocator s_node_allocator;
- };
-
-#include <ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_CLASS_NAME
-
-#undef PB_DS_TYPES_TRAITS_C_DEC
-
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-
-#ifdef PB_DS_TREE_TRACE
-#undef PB_DS_TREE_TRACE_BASE_C_DEC
-#endif
-
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
deleted file mode 100644
index 370574c90..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_dtor_entry_dealtor.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_dtor_entry_dealtor.hpp
- * Contains a binary tree container conditional deallocator
- */
-
-class bin_search_tree_cond_dtor_entry_dealtor_
-{
-public:
- inline
- bin_search_tree_cond_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd),
- m_no_action_dtor(false)
- { }
-
- inline void
- set_no_action_dtor()
- {
- m_no_action_dtor = true;
- }
-
- inline
- ~bin_search_tree_cond_dtor_entry_dealtor_()
- {
- if (m_no_action_dtor)
- return;
-
- typename Allocator::template rebind<Node>::other().
- deallocate(m_p_nd, 1);
- }
-
-protected:
- node_pointer m_p_nd;
-
- bool m_no_action_dtor;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
deleted file mode 100644
index 612ecebbe..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/cond_key_dtor_entry_dealtor.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_key_dtor_entry_dealtor.hpp
- * Contains a binary tree container conditional deallocator
- */
-
-class bin_seach_tree_cond_key_dtor_entry_dealtor_
-{
-public:
- inline
- bin_seach_tree_cond_key_dtor_entry_dealtor_(node_pointer p_nd) : m_p_nd(p_nd),
- m_no_action_dtor(false),
- m_key_destruct(false)
- { }
-
- inline void
- set_no_action_dtor()
- {
- m_no_action_dtor = true;
- }
-
- inline void
- set_key_destruct()
- {
- m_key_destruct = true;
- }
-
- inline
- ~bin_seach_tree_cond_key_dtor_entry_dealtor_()
- {
- if (m_no_action_dtor)
- return;
-
- if (m_key_destruct)
- m_p_nd->m_value.first.~Key();
-
- bin_tree_base::s_alloc.deallocate(m_p_nd, 1);
- }
-
-protected:
- node_pointer m_p_nd;
-
- bool m_no_action_dtor;
-
- bool m_key_destruct;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 925d204dc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,218 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_allocator
-PB_DS_CLASS_C_DEC::s_node_allocator;
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME() : m_p_head(s_node_allocator.allocate(1)), m_size(0)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
- Cmp_Fn(r_cmp_fn), m_p_head(s_node_allocator.allocate(1)), m_size(0)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
- Cmp_Fn(r_cmp_fn),
- node_update(r_node_update),
- m_p_head(s_node_allocator.allocate(1)),
- m_size(0)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
-#ifdef PB_DS_TREE_TRACE
- PB_DS_TREE_TRACE_BASE_C_DEC(other),
-#endif
- Cmp_Fn(other),
- node_update(other),
- m_p_head(s_node_allocator.allocate(1)),
- m_size(0)
-{
- initialize();
- m_size = other.m_size;
- _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
-
- __try
- {
- m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent);
- if (m_p_head->m_p_parent != NULL)
- m_p_head->m_p_parent->m_p_parent = m_p_head;
- m_size = other.m_size;
- initialize_min_max();
- }
- __catch(...)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
- s_node_allocator.deallocate(m_p_head, 1);
- __throw_exception_again;
- }
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
- value_swap(other);
- std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.structure_only_assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
- std::swap(m_p_head, other.m_p_head);
- std::swap(m_size, other.m_size);
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_CLASS_NAME()
-{
- clear();
- s_node_allocator.deallocate(m_p_head, 1);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{
- m_p_head->m_p_parent = NULL;
- m_p_head->m_p_left = m_p_head;
- m_p_head->m_p_right = m_p_head;
- m_size = 0;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-recursive_copy_node(const node_pointer p_nd)
-{
- if (p_nd == NULL)
- return (NULL);
-
- node_pointer p_ret = s_node_allocator.allocate(1);
- __try
- {
- new (p_ret) node(*p_nd);
- }
- __catch(...)
- {
- s_node_allocator.deallocate(p_ret, 1);
- __throw_exception_again;
- }
-
- p_ret->m_p_left = p_ret->m_p_right = NULL;
-
- __try
- {
- p_ret->m_p_left = recursive_copy_node(p_nd->m_p_left);
- p_ret->m_p_right = recursive_copy_node(p_nd->m_p_right);
- }
- __catch(...)
- {
- clear_imp(p_ret);
- __throw_exception_again;
- }
-
- if (p_ret->m_p_left != NULL)
- p_ret->m_p_left->m_p_parent = p_ret;
-
- if (p_ret->m_p_right != NULL)
- p_ret->m_p_right->m_p_parent = p_ret;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret);)
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize_min_max()
-{
- if (m_p_head->m_p_parent == NULL)
- {
- m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
- return;
- }
-
- {
- node_pointer p_min = m_p_head->m_p_parent;
- while (p_min->m_p_left != NULL)
- p_min = p_min->m_p_left;
- m_p_head->m_p_left = p_min;
- }
-
- {
- node_pointer p_max = m_p_head->m_p_parent;
- while (p_max->m_p_right != NULL)
- p_max = p_max->m_p_right;
- m_p_head->m_p_right = p_max;
- }
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
deleted file mode 100644
index e3447bd4b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,272 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- structure_only_assert_valid();
- assert_consistent_with_debug_base();
- assert_size();
- assert_iterators();
- if (m_p_head->m_p_parent == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(m_size == 0);
- }
- else
- {
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-structure_only_assert_valid() const
-{
- _GLIBCXX_DEBUG_ASSERT(m_p_head != NULL);
- if (m_p_head->m_p_parent == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head);
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head);
- }
- else
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent->m_p_parent == m_p_head);
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left != m_p_head);
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right != m_p_head);
- }
-
- if (m_p_head->m_p_parent != NULL)
- assert_node_consistent(m_p_head->m_p_parent);
- assert_min();
- assert_max();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent(const node_pointer p_nd) const
-{
- assert_node_consistent_(p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_consistent_t
-PB_DS_CLASS_C_DEC::
-assert_node_consistent_(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- return (std::make_pair((const_pointer)NULL,(const_pointer)NULL));
-
- assert_node_consistent_with_left(p_nd);
- assert_node_consistent_with_right(p_nd);
-
- const std::pair<const_pointer, const_pointer>
- l_range = assert_node_consistent_(p_nd->m_p_left);
-
- if (l_range.second != NULL)
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*l_range.second),
- PB_DS_V2F(p_nd->m_value)));
-
- const std::pair<const_pointer, const_pointer>
- r_range = assert_node_consistent_(p_nd->m_p_right);
-
- if (r_range.first != NULL)
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value),
- PB_DS_V2F(*r_range.first)));
-
- return (std::make_pair((l_range.first != NULL)? l_range.first :& p_nd->m_value,(r_range.second != NULL)? r_range.second :& p_nd->m_value));
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent_with_left(const node_pointer p_nd) const
-{
- if (p_nd->m_p_left == NULL)
- return;
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left->m_p_parent == p_nd);
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value),
- PB_DS_V2F(p_nd->m_p_left->m_value)));
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent_with_right(const node_pointer p_nd) const
-{
- if (p_nd->m_p_right == NULL)
- return;
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right->m_p_parent == p_nd);
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_p_right->m_value),
- PB_DS_V2F(p_nd->m_value)));
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_min() const
-{
- assert_min_imp(m_p_head->m_p_parent);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_min_imp(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_left == m_p_head);
- return;
- }
-
- if (p_nd->m_p_left == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_left);
- return;
- }
- assert_min_imp(p_nd->m_p_left);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_max() const
-{
- assert_max_imp(m_p_head->m_p_parent);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_max_imp(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_right == m_p_head);
- return;
- }
-
- if (p_nd->m_p_right == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd == m_p_head->m_p_right);
- return;
- }
-
- assert_max_imp(p_nd->m_p_right);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_iterators() const
-{
- size_type iterated_num = 0;
- const_iterator prev_it = end();
- for (const_iterator it = begin(); it != end(); ++it)
- {
- ++iterated_num;
- _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)).m_p_nd == it.m_p_nd);
- const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it));
- --upper_bound_it;
- _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == it.m_p_nd);
-
- if (prev_it != end())
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*prev_it),
- PB_DS_V2F(*it)));
- prev_it = it;
- }
-
- _GLIBCXX_DEBUG_ASSERT(iterated_num == m_size);
- size_type reverse_iterated_num = 0;
- const_reverse_iterator reverse_prev_it = rend();
- for (const_reverse_iterator reverse_it = rbegin(); reverse_it != rend();
- ++reverse_it)
- {
- ++reverse_iterated_num;
- _GLIBCXX_DEBUG_ASSERT(lower_bound(
- PB_DS_V2F(*reverse_it)).m_p_nd == reverse_it.m_p_nd);
-
- const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*reverse_it));
- --upper_bound_it;
- _GLIBCXX_DEBUG_ASSERT(upper_bound_it.m_p_nd == reverse_it.m_p_nd);
- if (reverse_prev_it != rend())
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(PB_DS_V2F(*reverse_prev_it),
- PB_DS_V2F(*reverse_it)));
- reverse_prev_it = reverse_it;
- }
- _GLIBCXX_DEBUG_ASSERT(reverse_iterated_num == m_size);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_consistent_with_debug_base() const
-{
- debug_base::check_size(m_size);
- assert_consistent_with_debug_base(m_p_head->m_p_parent);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_consistent_with_debug_base(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- return;
- debug_base::check_key_exists(PB_DS_V2F(p_nd->m_value));
- assert_consistent_with_debug_base(p_nd->m_p_left);
- assert_consistent_with_debug_base(p_nd->m_p_right);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_size() const
-{
- _GLIBCXX_DEBUG_ASSERT(recursive_count(m_p_head->m_p_parent) == m_size);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
deleted file mode 100644
index a000c744c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-actual_erase_node(node_pointer p_z)
-{
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
-
- _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
-
- p_z->~node();
-
- s_node_allocator.deallocate(p_z, 1);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_min_max_for_erased_node(node_pointer p_z)
-{
- if (m_size == 1)
- {
- m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
-
- return;
- }
-
- if (m_p_head->m_p_left == p_z)
- {
- iterator it(p_z);
-
- ++it;
-
- m_p_head->m_p_left = it.m_p_nd;
- }
- else if (m_p_head->m_p_right == p_z)
- {
- iterator it(p_z);
-
- --it;
-
- m_p_head->m_p_right = it.m_p_nd;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- clear_imp(m_p_head->m_p_parent);
-
- m_size = 0;
-
- initialize();
-
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
-
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear_imp(node_pointer p_nd)
-{
- if (p_nd == NULL)
- return;
-
- clear_imp(p_nd->m_p_left);
-
- clear_imp(p_nd->m_p_right);
-
- p_nd->~node();
-
- s_node_allocator.deallocate(p_nd, 1);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
deleted file mode 100644
index 413304b80..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/find_fn_imps.hpp
+++ /dev/null
@@ -1,182 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-lower_bound(const_key_reference r_key) const
-{
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (Cmp_Fn::operator()(
- PB_DS_V2F(p_nd->m_value),
- r_key))
- p_nd = p_nd->m_p_right;
- else
- {
- p_pot = p_nd;
-
- p_nd = p_nd->m_p_left;
- }
-
- return (iterator(p_pot));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-lower_bound(const_key_reference r_key)
-{
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (Cmp_Fn::operator()(
- PB_DS_V2F(p_nd->m_value),
- r_key))
- p_nd = p_nd->m_p_right;
- else
- {
- p_pot = p_nd;
-
- p_nd = p_nd->m_p_left;
- }
-
- return (iterator(p_pot));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-upper_bound(const_key_reference r_key) const
-{
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (Cmp_Fn::operator()(r_key,
- PB_DS_V2F(p_nd->m_value)))
- {
- p_pot = p_nd,
-
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- return (const_iterator(p_pot));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-upper_bound(const_key_reference r_key)
-{
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (Cmp_Fn::operator()(r_key,
- PB_DS_V2F(p_nd->m_value)))
- {
- p_pot = p_nd,
-
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- return (point_iterator(p_pot));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
- {
- p_pot = p_nd;
-
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- return point_iterator((p_pot != m_p_head&& Cmp_Fn::operator()(
- r_key,
- PB_DS_V2F(p_pot->m_value)))?
- m_p_head : p_pot);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key) const
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- node_pointer p_pot = m_p_head;
- node_pointer p_nd = m_p_head->m_p_parent;
-
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
- {
- p_pot = p_nd;
-
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- return const_point_iterator((p_pot != m_p_head&& Cmp_Fn::operator()(
- r_key,
- PB_DS_V2F(p_pot->m_value)))?
- m_p_head : p_pot);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
deleted file mode 100644
index b3e46112f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/info_fn_imps.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{
- return (m_size == 0);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{
- return (m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{
- return (s_node_allocator.max_size());
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
deleted file mode 100644
index 3abf0a08d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_leaf(const_reference r_value)
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- if (m_size == 0)
- return (std::make_pair(
- insert_imp_empty(r_value),
- true));
-
- node_pointer p_nd = m_p_head->m_p_parent;
- node_pointer p_pot = m_p_head;
-
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(
- PB_DS_V2F(p_nd->m_value),
- PB_DS_V2F(r_value)))
- {
- p_pot = p_nd;
-
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- if (p_pot == m_p_head)
- return (std::make_pair(
- insert_leaf_new(r_value, m_p_head->m_p_right, false),
- true));
-
- if (!Cmp_Fn::operator()(
- PB_DS_V2F(r_value),
- PB_DS_V2F(p_pot->m_value)))
- {
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(
- PB_DS_V2F(r_value)));
-
- return (std::make_pair(p_pot, false));
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
- PB_DS_V2F(r_value)));
-
- p_nd = p_pot->m_p_left;
- if (p_nd == NULL)
- return (std::make_pair(
- insert_leaf_new(r_value, p_pot, true),
- true));
-
- while (p_nd->m_p_right != NULL)
- p_nd = p_nd->m_p_right;
-
- return (std::make_pair(
- insert_leaf_new(r_value, p_nd, false),
- true));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-insert_leaf_new(const_reference r_value, node_pointer p_nd, bool left_nd)
-{
- node_pointer p_new_nd =
- get_new_node_for_leaf_insert( r_value, traits_base::m_no_throw_copies_indicator);
-
- if (left_nd)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == NULL);
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(
- PB_DS_V2F(r_value),
- PB_DS_V2F(p_nd->m_value)));
-
- p_nd->m_p_left = p_new_nd;
-
- if (m_p_head->m_p_left == p_nd)
- m_p_head->m_p_left = p_new_nd;
- }
- else
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_right == NULL);
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(
- PB_DS_V2F(p_nd->m_value),
- PB_DS_V2F(r_value)));
-
- p_nd->m_p_right = p_new_nd;
-
- if (m_p_head->m_p_right == p_nd)
- m_p_head->m_p_right = p_new_nd;
- }
-
- p_new_nd->m_p_parent = p_nd;
-
- p_new_nd->m_p_left = p_new_nd->m_p_right = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_nd));
-
- update_to_top(p_new_nd, (node_update* )this);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(
- PB_DS_V2F(r_value)));
-
- return (iterator(p_new_nd));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-insert_imp_empty(const_reference r_value)
-{
- node_pointer p_new_node =
- get_new_node_for_leaf_insert( r_value, traits_base::m_no_throw_copies_indicator);
-
- m_p_head->m_p_left = m_p_head->m_p_right =
- m_p_head->m_p_parent = p_new_node;
-
- p_new_node->m_p_parent = m_p_head;
-
- p_new_node->m_p_left = p_new_node->m_p_right = NULL;
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(
- PB_DS_V2F(r_value)));
-
- update_to_top(m_p_head->m_p_parent, (node_update* )this);
-
- return (iterator(p_new_node));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-get_new_node_for_leaf_insert(const_reference r_val, false_type)
-{
- node_pointer p_new_nd = s_node_allocator.allocate(1);
-
- cond_dealtor_t cond(p_new_nd);
-
- new (const_cast<void* >(
- static_cast<const void* >(&p_new_nd->m_value)))
- typename node::value_type(r_val);
-
- cond.set_no_action();
-
- p_new_nd->m_p_left = p_new_nd->m_p_right = NULL;
-
- ++m_size;
-
- return (p_new_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-get_new_node_for_leaf_insert(const_reference r_val, true_type)
-{
- node_pointer p_new_nd = s_node_allocator.allocate(1);
-
- new (const_cast<void* >(
- static_cast<const void* >(&p_new_nd->m_value)))
- typename node::value_type(r_val);
-
- p_new_nd->m_p_left = p_new_nd->m_p_right = NULL;
-
- ++m_size;
-
- return (p_new_nd);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
deleted file mode 100644
index ed7f1b172..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- return (iterator(m_p_head->m_p_left));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- return (const_iterator(m_p_head->m_p_left));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{
- return (iterator(m_p_head));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{
- return (const_iterator(m_p_head));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
-PB_DS_CLASS_C_DEC::
-rbegin() const
-{
- return (const_reverse_iterator(m_p_head->m_p_right));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-rbegin()
-{
- return (reverse_iterator(m_p_head->m_p_right));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-rend()
-{
- return (reverse_iterator(m_p_head));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
-PB_DS_CLASS_C_DEC::
-rend() const
-{
- return (const_reverse_iterator(m_p_head));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin() const
-{
- return (const_node_iterator(m_p_head->m_p_parent));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin()
-{
- return (node_iterator(m_p_head->m_p_parent));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_end() const
-{
- return (const_node_iterator(NULL));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_end()
-{
- return (node_iterator(NULL));
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
deleted file mode 100644
index 365f02b6e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp
+++ /dev/null
@@ -1,237 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_iterators.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-#ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
-#define PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC \
- bin_search_tree_const_node_it_< \
- Node, \
- Const_Iterator, \
- Iterator, \
- Allocator>
-
- // Const node iterator.
- template<typename Node,
- class Const_Iterator,
- class Iterator,
- class Allocator>
- class bin_search_tree_const_node_it_
- {
- private:
-
- private:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- public:
-
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // __Iterator's value type.
- typedef Const_Iterator value_type;
-
- // __Iterator's reference type.
- typedef Const_Iterator reference;
-
- // __Iterator's __const reference type.
- typedef Const_Iterator const_reference;
-
- // Metadata type.
- typedef typename Node::metadata_type metadata_type;
-
- // Const metadata reference type.
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- public:
-
- // Default constructor.
- /*
- inline
- bin_search_tree_const_node_it_()
- */
-
- inline
- bin_search_tree_const_node_it_(const node_pointer p_nd = NULL) : m_p_nd(const_cast<node_pointer>(p_nd))
- { }
-
- // Access.
- inline const_reference
- operator*() const
- {
- return (Const_Iterator(m_p_nd));
- }
-
- // Metadata access.
- inline const_metadata_reference
- get_metadata() const
- {
- return (m_p_nd->get_metadata());
- }
-
- // Returns the __const node iterator associated with the left node.
- inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
- get_l_child() const
- {
- return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_left));
- }
-
- // Returns the __const node iterator associated with the right node.
- inline PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
- get_r_child() const
- {
- return (PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(m_p_nd->m_p_right));
- }
-
- // Compares to a different iterator object.
- inline bool
- operator==(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const
- {
- return (m_p_nd == other.m_p_nd);
- }
-
- // Compares (negatively) to a different iterator object.
- inline bool
- operator!=(const PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC& other) const
- {
- return (m_p_nd != other.m_p_nd);
- }
-
- public:
- node_pointer m_p_nd;
- };
-
-#define PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC \
- bin_search_tree_node_it_< \
- Node, \
- Const_Iterator, \
- Iterator, \
- Allocator>
-
- // Node iterator.
- template<typename Node,
- class Const_Iterator,
- class Iterator,
- class Allocator>
- class bin_search_tree_node_it_ :
- public PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
-
- {
-
- private:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- public:
-
- // __Iterator's value type.
- typedef Iterator value_type;
-
- // __Iterator's reference type.
- typedef Iterator reference;
-
- // __Iterator's __const reference type.
- typedef Iterator const_reference;
-
- public:
-
- // Default constructor.
- /*
- inline
- bin_search_tree_node_it_();
- */
-
- inline
- bin_search_tree_node_it_(const node_pointer p_nd = NULL) : PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC(
- const_cast<node_pointer>(p_nd))
- { }
-
- // Access.
- inline Iterator
- operator*() const
- {
- return (Iterator(PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd));
- }
-
- // Returns the node iterator associated with the left node.
- inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
- get_l_child() const
- {
- return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
- PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_left));
- }
-
- // Returns the node iterator associated with the right node.
- inline PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
- get_r_child() const
- {
- return (PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC(
- PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC::m_p_nd->m_p_right));
- }
-
- };
-
-#undef PB_DS_TREE_CONST_NODE_ITERATOR_CLASS_C_DEC
-
-#undef PB_DS_TREE_NODE_ITERATOR_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_ITERATORS_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
deleted file mode 100644
index bb249e070..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp
+++ /dev/null
@@ -1,381 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file point_iterators.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-#ifndef PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP
-#define PB_DS_BIN_SEARCH_TREE_FIND_ITERATORS_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_TREE_CONST_IT_C_DEC \
- bin_search_tree_const_it_< \
- Node_Pointer, \
- Value_Type, \
- Pointer, \
- Const_Pointer, \
- Reference, \
- Const_Reference, \
- Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_TREE_CONST_ODIR_IT_C_DEC \
- bin_search_tree_const_it_< \
- Node_Pointer, \
- Value_Type, \
- Pointer, \
- Const_Pointer, \
- Reference, \
- Const_Reference, \
- !Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_TREE_IT_C_DEC \
- bin_search_tree_it_< \
- Node_Pointer, \
- Value_Type, \
- Pointer, \
- Const_Pointer, \
- Reference, \
- Const_Reference, \
- Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_TREE_ODIR_IT_C_DEC \
- bin_search_tree_it_< \
- Node_Pointer, \
- Value_Type, \
- Pointer, \
- Const_Pointer, \
- Reference, \
- Const_Reference, \
- !Is_Forward_Iterator, \
- Allocator>
-
- // Const iterator.
- template<typename Node_Pointer,
- typename Value_Type,
- typename Pointer,
- typename Const_Pointer,
- typename Reference,
- typename Const_Reference,
- bool Is_Forward_Iterator,
- class Allocator>
- class bin_search_tree_const_it_
- {
-
- public:
-
- typedef std::bidirectional_iterator_tag iterator_category;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef Pointer pointer;
-
- typedef Const_Pointer const_pointer;
-
- typedef Reference reference;
-
- typedef Const_Reference const_reference;
-
- public:
-
- inline
- bin_search_tree_const_it_(const Node_Pointer p_nd = NULL)
- : m_p_nd(const_cast<Node_Pointer>(p_nd))
- { }
-
- inline
- bin_search_tree_const_it_(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other)
- : m_p_nd(other.m_p_nd)
- { }
-
- inline
- PB_DS_TREE_CONST_IT_C_DEC&
- operator=(const PB_DS_TREE_CONST_IT_C_DEC& other)
- {
- m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline
- PB_DS_TREE_CONST_IT_C_DEC&
- operator=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other)
- {
- m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline const_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL);
- return &m_p_nd->m_value;
- }
-
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL);
- return m_p_nd->m_value;
- }
-
- inline bool
- operator==(const PB_DS_TREE_CONST_IT_C_DEC & other) const
- { return m_p_nd == other.m_p_nd; }
-
- inline bool
- operator==(const PB_DS_TREE_CONST_ODIR_IT_C_DEC & other) const
- { return m_p_nd == other.m_p_nd; }
-
- inline bool
- operator!=(const PB_DS_TREE_CONST_IT_C_DEC& other) const
- { return m_p_nd != other.m_p_nd; }
-
- inline bool
- operator!=(const PB_DS_TREE_CONST_ODIR_IT_C_DEC& other) const
- { return m_p_nd != other.m_p_nd; }
-
- inline PB_DS_TREE_CONST_IT_C_DEC&
- operator++()
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL);
- inc(integral_constant<int,Is_Forward_Iterator>());
- return *this;
- }
-
- inline PB_DS_TREE_CONST_IT_C_DEC
- operator++(int)
- {
- PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd);
- operator++();
- return ret_it;
- }
-
- inline PB_DS_TREE_CONST_IT_C_DEC&
- operator--()
- {
- dec(integral_constant<int,Is_Forward_Iterator>());
- return *this;
- }
-
- inline PB_DS_TREE_CONST_IT_C_DEC
- operator--(int)
- {
- PB_DS_TREE_CONST_IT_C_DEC ret_it(m_p_nd);
- operator--();
- return ret_it;
- }
-
- protected:
- inline void
- inc(false_type)
- { dec(true_type()); }
-
- void
- inc(true_type)
- {
- if (m_p_nd->special()&&
- m_p_nd->m_p_parent->m_p_parent == m_p_nd)
- {
- m_p_nd = m_p_nd->m_p_left;
- return;
- }
-
- if (m_p_nd->m_p_right != NULL)
- {
- m_p_nd = m_p_nd->m_p_right;
- while (m_p_nd->m_p_left != NULL)
- m_p_nd = m_p_nd->m_p_left;
- return;
- }
-
- Node_Pointer p_y = m_p_nd->m_p_parent;
- while (m_p_nd == p_y->m_p_right)
- {
- m_p_nd = p_y;
- p_y = p_y->m_p_parent;
- }
-
- if (m_p_nd->m_p_right != p_y)
- m_p_nd = p_y;
- }
-
- inline void
- dec(false_type)
- { inc(true_type()); }
-
- void
- dec(true_type)
- {
- if (m_p_nd->special() && m_p_nd->m_p_parent->m_p_parent == m_p_nd)
- {
- m_p_nd = m_p_nd->m_p_right;
- return;
- }
-
- if (m_p_nd->m_p_left != NULL)
- {
- Node_Pointer p_y = m_p_nd->m_p_left;
- while (p_y->m_p_right != NULL)
- p_y = p_y->m_p_right;
- m_p_nd = p_y;
- return;
- }
-
- Node_Pointer p_y = m_p_nd->m_p_parent;
- while (m_p_nd == p_y->m_p_left)
- {
- m_p_nd = p_y;
- p_y = p_y->m_p_parent;
- }
- if (m_p_nd->m_p_left != p_y)
- m_p_nd = p_y;
- }
-
- public:
- Node_Pointer m_p_nd;
- };
-
- // Iterator.
- template<typename Node_Pointer,
- typename Value_Type,
- typename Pointer,
- typename Const_Pointer,
- typename Reference,
- typename Const_Reference,
- bool Is_Forward_Iterator,
- class Allocator>
- class bin_search_tree_it_ :
- public PB_DS_TREE_CONST_IT_C_DEC
-
- {
-
- public:
-
- inline
- bin_search_tree_it_(const Node_Pointer p_nd = NULL)
- : PB_DS_TREE_CONST_IT_C_DEC((Node_Pointer)p_nd)
- { }
-
- inline
- bin_search_tree_it_(const PB_DS_TREE_ODIR_IT_C_DEC& other)
- : PB_DS_TREE_CONST_IT_C_DEC(other.m_p_nd)
- { }
-
- inline
- PB_DS_TREE_IT_C_DEC&
- operator=(const PB_DS_TREE_IT_C_DEC& other)
- {
- base_it_type::m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline
- PB_DS_TREE_IT_C_DEC&
- operator=(const PB_DS_TREE_ODIR_IT_C_DEC& other)
- {
- base_it_type::m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline typename PB_DS_TREE_CONST_IT_C_DEC::pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != NULL);
- return &base_it_type::m_p_nd->m_value;
- }
-
- inline typename PB_DS_TREE_CONST_IT_C_DEC::reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd != NULL);
- return base_it_type::m_p_nd->m_value;
- }
-
- inline PB_DS_TREE_IT_C_DEC&
- operator++()
- {
- PB_DS_TREE_CONST_IT_C_DEC:: operator++();
- return *this;
- }
-
- inline PB_DS_TREE_IT_C_DEC
- operator++(int)
- {
- PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd);
- operator++();
- return ret_it;
- }
-
- inline PB_DS_TREE_IT_C_DEC&
- operator--()
- {
- PB_DS_TREE_CONST_IT_C_DEC:: operator--();
- return *this;
- }
-
- inline PB_DS_TREE_IT_C_DEC
- operator--(int)
- {
- PB_DS_TREE_IT_C_DEC ret_it(base_it_type::m_p_nd);
- operator--();
- return ret_it;
- }
-
- protected:
- typedef PB_DS_TREE_CONST_IT_C_DEC base_it_type;
- };
-
-#undef PB_DS_TREE_CONST_IT_C_DEC
-#undef PB_DS_TREE_CONST_ODIR_IT_C_DEC
-#undef PB_DS_TREE_IT_C_DEC
-#undef PB_DS_TREE_ODIR_IT_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
deleted file mode 100644
index 63f307d39..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn()
-{
- return (*this);
-}
-
-PB_DS_CLASS_T_DEC
-const Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn() const
-{
- return (*this);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
deleted file mode 100644
index 667ef8470..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/r_erase_fn_imps.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file r_erase_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-actual_erase_node(node_pointer p_z)
-{
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
-
- _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
-
- p_z->~node();
-
- s_node_allocator.deallocate(p_z, 1);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_min_max_for_erased_node(node_pointer p_z)
-{
- if (m_size == 1)
- {
- m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
-
- return;
- }
-
- if (m_p_head->m_p_left == p_z)
- {
- iterator it(p_z);
-
- ++it;
-
- m_p_head->m_p_left = it.m_p_nd;
- }
- else if (m_p_head->m_p_right == p_z)
- {
- iterator it(p_z);
-
- --it;
-
- m_p_head->m_p_right = it.m_p_nd;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
-
- clear_imp(m_p_head->m_p_parent);
-
- m_size = 0;
-
- initialize();
-
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
-
- _GLIBCXX_DEBUG_ONLY(structure_only_assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear_imp(node_pointer p_nd)
-{
- if (p_nd == NULL)
- return;
-
- clear_imp(p_nd->m_p_left);
-
- clear_imp(p_nd->m_p_right);
-
- p_nd->~Node();
-
- s_node_allocator.deallocate(p_nd, 1);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
deleted file mode 100644
index 0598657fe..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/rotate_fn_imps.hpp
+++ /dev/null
@@ -1,156 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file rotate_fn_imps.hpp
- * Contains imps for rotating nodes.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_left(node_pointer p_x)
-{
- node_pointer p_y = p_x->m_p_right;
-
- p_x->m_p_right = p_y->m_p_left;
-
- if (p_y->m_p_left != NULL)
- p_y->m_p_left->m_p_parent = p_x;
-
- p_y->m_p_parent = p_x->m_p_parent;
-
- if (p_x == m_p_head->m_p_parent)
- m_p_head->m_p_parent = p_y;
- else if (p_x == p_x->m_p_parent->m_p_left)
- p_x->m_p_parent->m_p_left = p_y;
- else
- p_x->m_p_parent->m_p_right = p_y;
-
- p_y->m_p_left = p_x;
- p_x->m_p_parent = p_y;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
-
- apply_update(p_x, (node_update* )this);
- apply_update(p_x->m_p_parent, (node_update* )this);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_right(node_pointer p_x)
-{
- node_pointer p_y = p_x->m_p_left;
-
- p_x->m_p_left = p_y->m_p_right;
-
- if (p_y->m_p_right != NULL)
- p_y->m_p_right->m_p_parent = p_x;
-
- p_y->m_p_parent = p_x->m_p_parent;
-
- if (p_x == m_p_head->m_p_parent)
- m_p_head->m_p_parent = p_y;
- else if (p_x == p_x->m_p_parent->m_p_right)
- p_x->m_p_parent->m_p_right = p_y;
- else
- p_x->m_p_parent->m_p_left = p_y;
-
- p_y->m_p_right = p_x;
- p_x->m_p_parent = p_y;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
-
- apply_update(p_x, (node_update* )this);
- apply_update(p_x->m_p_parent, (node_update* )this);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_parent(node_pointer p_nd)
-{
- node_pointer p_parent = p_nd->m_p_parent;
-
- if (p_nd == p_parent->m_p_left)
- rotate_right(p_parent);
- else
- rotate_left(p_parent);
-
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent ||
- p_nd->m_p_right == p_parent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer p_nd, Node_Update_* /*p_update*/)
-{
- node_update::operator()(
- node_iterator(p_nd),
- const_node_iterator(static_cast<node_pointer>(NULL)));
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-inline void
-PB_DS_CLASS_C_DEC::
-update_to_top(node_pointer p_nd, Node_Update_* p_update)
-{
- while (p_nd != m_p_head)
- {
- apply_update(p_nd, p_update);
-
- p_nd = p_nd->m_p_parent;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/)
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
deleted file mode 100644
index 9d2bd6d74..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,146 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-join_prep(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (other.m_size == 0)
- return false;
-
- if (m_size == 0)
- {
- value_swap(other);
- return false;
- }
-
- const bool greater = Cmp_Fn::operator()(PB_DS_V2F(m_p_head->m_p_right->m_value), PB_DS_V2F(other.m_p_head->m_p_left->m_value));
-
- const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(other.m_p_head->m_p_right->m_value), PB_DS_V2F(m_p_head->m_p_left->m_value));
-
- if (!greater && !lesser)
- __throw_join_error();
-
- if (lesser)
- value_swap(other);
-
- m_size += other.m_size;
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-join_finish(PB_DS_CLASS_C_DEC& other)
-{
- initialize_min_max();
- other.initialize();
-}
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- other.clear();
-
- if (m_size == 0)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return false;
- }
-
- if (Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_left->m_value)))
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return false;
- }
-
- if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(m_p_head->m_p_right->m_value)))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return false;
- }
-
- if (m_size == 1)
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return false;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split_finish(PB_DS_CLASS_C_DEC& other)
-{
- other.initialize_min_max();
- other.m_size = std::distance(other.begin(), other.end());
- m_size -= other.m_size;
- initialize_min_max();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-recursive_count(node_pointer p) const
-{
- if (p == NULL)
- return 0;
- return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
deleted file mode 100644
index 58c30c3fe..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/bin_search_tree_/traits.hpp
+++ /dev/null
@@ -1,250 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation for bin_search_tree_.
- */
-
-#ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/bin_search_tree_/point_iterators.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/node_iterators.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Key,
- typename Mapped,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn,
- class Allocator>
- class Node_Update,
- class Node,
- class Allocator>
- struct bin_search_tree_traits
- {
- private:
- typedef
- types_traits<
- Key,
- Mapped,
- Allocator,
- false>
- type_traits;
-
- public:
- typedef Node node;
-
- typedef
- bin_search_tree_const_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- true,
- Allocator>
- const_point_iterator;
-
- typedef
- bin_search_tree_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- true,
- Allocator>
- point_iterator;
-
- typedef
- bin_search_tree_const_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- false,
- Allocator>
- const_reverse_iterator;
-
- typedef
- bin_search_tree_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- false,
- Allocator>
- reverse_iterator;
-
- typedef
- bin_search_tree_const_node_it_<
- Node,
- const_point_iterator,
- point_iterator,
- Allocator>
- const_node_iterator;
-
- typedef
- bin_search_tree_node_it_<
- Node,
- const_point_iterator,
- point_iterator,
- Allocator>
- node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- template<typename Key,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn,
- class Allocator>
- class Node_Update,
- class Node,
- class Allocator>
- struct bin_search_tree_traits<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- Node,
- Allocator>
- {
- private:
- typedef
- types_traits<
- Key,
- null_mapped_type,
- Allocator,
- false>
- type_traits;
-
- public:
- typedef Node node;
-
- typedef
- bin_search_tree_const_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- true,
- Allocator>
- const_point_iterator;
-
- typedef const_point_iterator point_iterator;
-
- typedef
- bin_search_tree_const_it_<
- typename Allocator::template rebind<
- node>::other::pointer,
- typename type_traits::value_type,
- typename type_traits::pointer,
- typename type_traits::const_pointer,
- typename type_traits::reference,
- typename type_traits::const_reference,
- false,
- Allocator>
- const_reverse_iterator;
-
- typedef const_reverse_iterator reverse_iterator;
-
- typedef
- bin_search_tree_const_node_it_<
- Node,
- const_point_iterator,
- point_iterator,
- Allocator>
- const_node_iterator;
-
- typedef const_node_iterator node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_BIN_SEARCH_TREE_NODE_AND_IT_TRAITS_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
deleted file mode 100644
index 576cba265..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/binary_heap_.hpp
+++ /dev/null
@@ -1,357 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file binary_heap_.hpp
- * Contains an implementation class for a binary heap.
- */
-
-#ifndef PB_DS_BINARY_HEAP_HPP
-#define PB_DS_BINARY_HEAP_HPP
-
-/*
- * Based on CLRS.
- */
-
-#include <queue>
-#include <algorithm>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/binary_heap_/entry_cmp.hpp>
-#include <ext/pb_ds/detail/binary_heap_/entry_pred.hpp>
-#include <ext/pb_ds/detail/binary_heap_/resize_policy.hpp>
-#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp>
-#include <ext/pb_ds/detail/binary_heap_/const_iterator.hpp>
-#ifdef PB_DS_BINARY_HEAP_TRACE_
-#include <iostream>
-#endif
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- binary_heap_<Value_Type, Cmp_Fn, Allocator>
-
-#define PB_DS_ENTRY_CMP_DEC \
- entry_cmp<Value_Type, Cmp_Fn, is_simple<Value_Type>::value, Allocator>::type
-
-#define PB_DS_RESIZE_POLICY_DEC \
- __gnu_pbds::detail::resize_policy<typename Allocator::size_type>
-
- /**
- * class description = "Base class for some types of h3ap$">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class binary_heap_ : public PB_DS_ENTRY_CMP_DEC,
- public PB_DS_RESIZE_POLICY_DEC
- {
-
- private:
- enum
- {
- simple_value = is_simple<Value_Type>::value
- };
-
- typedef integral_constant<int, simple_value> no_throw_copies_t;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other
- value_allocator;
-
- typedef
- typename __conditional_type<
- simple_value,
- Value_Type,
- typename value_allocator::pointer>::__type
- entry;
-
- typedef
- typename Allocator::template rebind<
- entry>::other
- entry_allocator;
-
- typedef typename entry_allocator::pointer entry_pointer;
-
- typedef typename PB_DS_ENTRY_CMP_DEC entry_cmp;
-
- typedef PB_DS_RESIZE_POLICY_DEC resize_policy;
-
- typedef
- cond_dealtor<
- Value_Type,
- Allocator>
- cond_dealtor_t;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- typedef
- binary_heap_const_point_iterator_<
- value_type,
- entry,
- simple_value,
- Allocator>
- const_point_iterator;
-
- typedef const_point_iterator point_iterator;
-
- typedef
- binary_heap_const_iterator_<
- value_type,
- entry,
- simple_value,
- Allocator>
- const_iterator;
-
- typedef const_iterator iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
- public:
-
- binary_heap_();
-
- binary_heap_(const Cmp_Fn& r_cmp_fn);
-
- binary_heap_(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~binary_heap_();
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- Cmp_Fn&
- get_cmp_fn();
-
- const Cmp_Fn&
- get_cmp_fn() const;
-
- inline point_iterator
- push(const_reference r_val);
-
- void
- modify(point_iterator it, const_reference r_new_val);
-
- inline const_reference
- top() const;
-
- inline void
- pop();
-
- inline void
- erase(point_iterator it);
-
- template<typename Pred>
- typename PB_DS_CLASS_C_DEC::size_type
- erase_if(Pred pred);
-
- inline static void
- erase_at(entry_pointer a_entries, size_type size, false_type);
-
- inline static void
- erase_at(entry_pointer a_entries, size_type size, true_type);
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
- void
- clear();
-
- template<typename Pred>
- void
- split(Pred pred, PB_DS_CLASS_C_DEC& other);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
-#ifdef PB_DS_BINARY_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- protected:
-
- template<typename It>
- void
- copy_from_range(It first_it, It last_it);
-
- private:
-
- void
- value_swap(PB_DS_CLASS_C_DEC& other);
-
- inline void
- insert_value(const_reference r_val, false_type);
-
- inline void
- insert_value(value_type val, true_type);
-
- inline void
- insert_entry(entry e);
-
- inline void
- resize_for_insert_if_needed();
-
- inline void
- swap_value_imp(entry_pointer p_e, value_type new_val, true_type);
-
- inline void
- swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type);
-
- void
- fix(entry_pointer p_e);
-
- inline const_reference
- top_imp(true_type) const;
-
- inline const_reference
- top_imp(false_type) const;
-
- inline static size_type
- left_child(size_type i);
-
- inline static size_type
- right_child(size_type i);
-
- inline static size_type
- parent(size_type i);
-
- inline void
- resize_for_erase_if_needed();
-
- template<typename Pred>
- size_type
- partition(Pred pred);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_BINARY_HEAP_TRACE_
- void
- trace_entry(const entry& r_e, false_type) const;
-
- void
- trace_entry(const entry& r_e, true_type) const;
-#endif
-
- private:
- static entry_allocator s_entry_allocator;
-
- static value_allocator s_value_allocator;
-
- static no_throw_copies_t s_no_throw_copies_ind;
-
- size_type m_size;
-
- size_type m_actual_size;
-
- entry_pointer m_a_entries;
- };
-
-#include <ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_ENTRY_CMP_DEC
-#undef PB_DS_RESIZE_POLICY_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
deleted file mode 100644
index 9cb13f99c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_iterator.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_iterator.hpp
- * Contains an iterator class returned by the table's const find and insert
- * methods.
- */
-
-#ifndef PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP
-#define PB_DS_BINARY_HEAP_CONST_ITERATOR_HPP
-
-#include <ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_C_DEC \
- binary_heap_const_iterator_<Value_Type, Entry, Simple, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- binary_heap_const_point_iterator_<Value_Type, Entry, Simple, Allocator>
-
- // Const point-type iterator.
- template<typename Value_Type,
- typename Entry,
- bool Simple,
- class Allocator>
- class binary_heap_const_iterator_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef typename PB_DS_BASE_C_DEC::entry_pointer entry_pointer;
-
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
-
- // Category.
- typedef std::forward_iterator_tag iterator_category;
-
- // Difference type.
- typedef typename Allocator::difference_type difference_type;
-
- // Iterator's value type.
- typedef typename base_type::value_type value_type;
-
- // Iterator's pointer type.
- typedef typename base_type::pointer pointer;
-
- // Iterator's const pointer type.
- typedef typename base_type::const_pointer const_pointer;
-
- // Iterator's reference type.
- typedef typename base_type::reference reference;
-
- // Iterator's const reference type.
- typedef typename base_type::const_reference const_reference;
-
- public:
-
- inline
- binary_heap_const_iterator_(entry_pointer p_e) : base_type(p_e)
- { }
-
- // Default constructor.
- inline
- binary_heap_const_iterator_()
- { }
-
- // Copy constructor.
- inline
- binary_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other)
- { }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const PB_DS_CLASS_C_DEC& other) const
- {
- return base_type::m_p_e == other.m_p_e;
- }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const PB_DS_CLASS_C_DEC& other) const
- {
- return base_type::m_p_e != other.m_p_e;
- }
-
- inline PB_DS_CLASS_C_DEC&
- operator++()
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_e != NULL);
- inc();
- return *this;
- }
-
- inline PB_DS_CLASS_C_DEC
- operator++(int)
- {
- PB_DS_CLASS_C_DEC ret_it(base_type::m_p_e);
- operator++();
- return ret_it;
- }
-
- private:
- void
- inc()
- { ++base_type::m_p_e; }
- };
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
deleted file mode 100644
index d4013db16..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/const_point_iterator.hpp
+++ /dev/null
@@ -1,144 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_point_iterator.hpp
- * Contains an iterator class returned by the table's const find and insert
- * methods.
- */
-
-#ifndef PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP
-#define PB_DS_BINARY_HEAP_CONST_FIND_ITERATOR_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- // Const point-type iterator.
- template<typename Value_Type, typename Entry, bool Simple,
- typename Allocator>
- class binary_heap_const_point_iterator_
- {
- protected:
- typedef typename Allocator::template rebind<Entry>::other::pointer entry_pointer;
-
- public:
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // Iterator's value type.
- typedef Value_Type value_type;
-
- // Iterator's pointer type.
- typedef typename Allocator::template rebind<value_type>::other::pointer
- pointer;
-
- // Iterator's const pointer type.
- typedef
- typename Allocator::template rebind<value_type>::other::const_pointer
- const_pointer;
-
- // Iterator's reference type.
- typedef
- typename Allocator::template rebind<value_type>::other::reference
- reference;
-
- // Iterator's const reference type.
- typedef
- typename Allocator::template rebind<value_type>::other::const_reference
- const_reference;
-
- inline
- binary_heap_const_point_iterator_(entry_pointer p_e) : m_p_e(p_e)
- { }
-
- // Default constructor.
- inline
- binary_heap_const_point_iterator_() : m_p_e(NULL) { }
-
- // Copy constructor.
- inline
- binary_heap_const_point_iterator_(const binary_heap_const_point_iterator_& other)
- : m_p_e(other.m_p_e)
- { }
-
- // Access.
- inline const_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_e != NULL);
- return to_ptr(integral_constant<int, Simple>());
- }
-
- // Access.
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_e != NULL);
- return *to_ptr(integral_constant<int, Simple>());
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const binary_heap_const_point_iterator_& other) const
- { return m_p_e == other.m_p_e; }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const binary_heap_const_point_iterator_& other) const
- { return m_p_e != other.m_p_e; }
-
- private:
- inline const_pointer
- to_ptr(true_type) const
- { return m_p_e; }
-
- inline const_pointer
- to_ptr(false_type) const
- { return *m_p_e; }
-
- public:
- entry_pointer m_p_e;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index a77a02521..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for binary_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::entry_allocator
-PB_DS_CLASS_C_DEC::s_entry_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::value_allocator
-PB_DS_CLASS_C_DEC::s_value_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::no_throw_copies_t
-PB_DS_CLASS_C_DEC::s_no_throw_copies_ind;
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- {
- insert_value(*first_it, s_no_throw_copies_ind);
- ++first_it;
- }
-
- std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binary_heap_() :
- m_size(0),
- m_actual_size(resize_policy::min_size),
- m_a_entries(s_entry_allocator.allocate(m_actual_size))
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binary_heap_(const Cmp_Fn& r_cmp_fn) :
- entry_cmp(r_cmp_fn),
- m_size(0),
- m_actual_size(resize_policy::min_size),
- m_a_entries(s_entry_allocator.allocate(m_actual_size))
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binary_heap_(const PB_DS_CLASS_C_DEC& other) :
- entry_cmp(other),
- resize_policy(other),
- m_size(0),
- m_actual_size(other.m_actual_size),
- m_a_entries(s_entry_allocator.allocate(m_actual_size))
-{
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries);
-
- const_iterator first_it = other.begin();
- const_iterator last_it = other.end();
-
- __try
- {
- while (first_it != last_it)
- {
- insert_value(*first_it, s_no_throw_copies_ind);
- ++first_it;
- }
- }
- __catch(...)
- {
- for (size_type i = 0; i < m_size; ++i)
- erase_at(m_a_entries, i, s_no_throw_copies_ind);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
- __throw_exception_again;
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(m_a_entries != other.m_a_entries);
-
- value_swap(other);
- std::swap((entry_cmp& )(*this), (entry_cmp& )other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_a_entries, other.m_a_entries);
- std::swap(m_size, other.m_size);
- std::swap(m_actual_size, other.m_actual_size);
- static_cast<resize_policy*>(this)->swap(other);
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~binary_heap_()
-{
- for (size_type i = 0; i < m_size; ++i)
- erase_at(m_a_entries, i, s_no_throw_copies_ind);
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
deleted file mode 100644
index fcfecfd50..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
-#ifdef PB_DS_REGRESSION
- s_entry_allocator.check_allocated(m_a_entries, m_actual_size);
-#endif
-
- resize_policy::assert_valid();
- _GLIBCXX_DEBUG_ASSERT(m_size <= m_actual_size);
- for (size_type i = 0; i < m_size; ++i)
- {
-#ifdef PB_DS_REGRESSION
- s_value_allocator.check_allocated(m_a_entries[i], 1);
-#endif
-
- if (left_child(i) < m_size)
- _GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child(i)]));
-
- _GLIBCXX_DEBUG_ASSERT(parent(left_child(i)) == i);
-
- if (right_child(i) < m_size)
- _GLIBCXX_DEBUG_ASSERT(!entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child(i)]));
-
- _GLIBCXX_DEBUG_ASSERT(parent(right_child(i)) == i);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
deleted file mode 100644
index b0a9b5b0d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_cmp.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file entry_cmp.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-#ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
-#define PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Value_Type,
- class Cmp_Fn,
- bool No_Throw,
- class Allocator>
- struct entry_cmp
- {
- typedef Cmp_Fn type;
- };
-
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- struct entry_cmp<
- Value_Type,
- Cmp_Fn,
- false,
- Allocator>
- {
- public:
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- entry;
-
- struct type : public Cmp_Fn
- {
- public:
- inline
- type()
- { }
-
- inline
- type(const Cmp_Fn& other) : Cmp_Fn(other)
- { }
-
- inline bool
- operator()(entry p_lhs, entry p_rhs) const
- {
- return Cmp_Fn::operator()(*p_lhs, * p_rhs);
- }
- };
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_CMP_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
deleted file mode 100644
index 185529e15..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/entry_pred.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file entry_pred.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-#ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
-#define PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Value_Type,
- class Pred,
- bool No_Throw,
- class Allocator>
- struct entry_pred
- {
- typedef Pred type;
- };
-
- template<typename Value_Type, class Pred, class Allocator>
- struct entry_pred<
- Value_Type,
- Pred,
- false,
- Allocator>
- {
- public:
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- entry;
-
- struct type : public Pred
- {
- public:
- inline
- type()
- { }
-
- inline
- type(const Pred& other) : Pred(other)
- { }
-
- inline bool
- operator()(entry p_v) const
- {
- return Pred::operator()(*p_v);
- }
- };
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_BINARY_HEAP_ENTRY_PRED_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
deleted file mode 100644
index 30f3a4854..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,246 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- for (size_type i = 0; i < m_size; ++i)
- erase_at(m_a_entries, i, s_no_throw_copies_ind);
-
- __try
- {
- const size_type actual_size = resize_policy::get_new_size_for_arbitrary(0);
-
- entry_pointer a_entries = s_entry_allocator.allocate(actual_size);
-
- resize_policy::notify_arbitrary(actual_size);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
-
- m_actual_size = actual_size;
-
- m_a_entries = a_entries;
- }
- __catch(...)
- { }
-
- m_size = 0;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_at(entry_pointer a_entries, size_type i, false_type)
-{
- a_entries[i]->~value_type();
-
- s_value_allocator.deallocate(a_entries[i], 1);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_at(entry_pointer, size_type, true_type)
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-pop()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!empty());
-
- erase_at(m_a_entries, 0, s_no_throw_copies_ind);
-
- std::pop_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
-
- resize_for_erase_if_needed();
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- typedef
- typename entry_pred<
- value_type,
- Pred,
- simple_value,
- Allocator>::type
- pred_t;
-
- const size_type left = partition(pred_t(pred));
-
- _GLIBCXX_DEBUG_ASSERT(m_size >= left);
-
- const size_type ersd = m_size - left;
-
- for (size_type i = left; i < m_size; ++i)
- erase_at(m_a_entries, i, s_no_throw_copies_ind);
-
- __try
- {
- const size_type actual_size =
- resize_policy::get_new_size_for_arbitrary(left);
-
- entry_pointer a_entries = s_entry_allocator.allocate(actual_size);
-
- std::copy(m_a_entries, m_a_entries + left, a_entries);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
-
- m_actual_size = actual_size;
-
- resize_policy::notify_arbitrary(m_actual_size);
- }
- __catch(...)
- { };
-
- m_size = left;
-
- std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return ersd;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-erase(point_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!empty());
-
- const size_type fix_pos = it.m_p_e - m_a_entries;
-
- std::swap(*it.m_p_e, m_a_entries[m_size - 1]);
-
- erase_at(m_a_entries, m_size - 1, s_no_throw_copies_ind);
-
- resize_for_erase_if_needed();
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
-
- _GLIBCXX_DEBUG_ASSERT(fix_pos <= m_size);
-
- if (fix_pos != m_size)
- fix(m_a_entries + fix_pos);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-resize_for_erase_if_needed()
-{
- if (!resize_policy::resize_needed_for_shrink(m_size))
- return;
-
- __try
- {
- const size_type new_actual_size =
- resize_policy::get_new_size_for_shrink();
-
- entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size);
-
- resize_policy::notify_shrink_resize();
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- std::copy(m_a_entries, m_a_entries + m_size - 1, a_new_entries);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
-
- m_actual_size = new_actual_size;
-
- m_a_entries = a_new_entries;
- }
- __catch(...)
- { }
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-partition(Pred pred)
-{
- size_type left = 0;
- size_type right = m_size - 1;
-
- while (right + 1 != left)
- {
- _GLIBCXX_DEBUG_ASSERT(left <= m_size);
-
- if (!pred(m_a_entries[left]))
- ++left;
- else if (pred(m_a_entries[right]))
- --right;
- else
- {
- _GLIBCXX_DEBUG_ASSERT(left < right);
-
- std::swap(m_a_entries[left], m_a_entries[right]);
-
- ++left;
- --right;
- }
- }
-
- return left;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
deleted file mode 100644
index 28d4a8c80..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/find_fn_imps.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!empty());
-
- return top_imp(s_no_throw_copies_ind);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top_imp(true_type) const
-{
- return* m_a_entries;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top_imp(false_type) const
-{
- return** m_a_entries;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-left_child(size_type i)
-{
- return i* 2 + 1;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-right_child(size_type i)
-{
- return i* 2 + 2;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-parent(size_type i)
-{
- return (i - 1) / 2;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
deleted file mode 100644
index d29279318..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/info_fn_imps.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{
- return (m_size == 0);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{
- return (m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{
- return (s_entry_allocator.max_size());
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
deleted file mode 100644
index f13a3cb19..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-push(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- insert_value(r_val, s_no_throw_copies_ind);
- std::push_heap(m_a_entries, m_a_entries + m_size,
- static_cast<entry_cmp&>(*this));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return point_iterator(m_a_entries);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-insert_value(value_type val, true_type)
-{
- resize_for_insert_if_needed();
-
- m_a_entries[m_size++] = val;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-insert_value(const_reference r_val, false_type)
-{
- resize_for_insert_if_needed();
- pointer p_new = s_value_allocator.allocate(1);
- cond_dealtor_t cond(p_new);
- new (p_new) value_type(r_val);
- cond.set_no_action();
- m_a_entries[m_size++] = p_new;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-insert_entry(entry e)
-{
- resize_for_insert_if_needed();
- m_a_entries[m_size++] = e;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-resize_for_insert_if_needed()
-{
- if (!resize_policy::resize_needed_for_grow(m_size))
- {
- _GLIBCXX_DEBUG_ASSERT(m_size < m_actual_size);
- return;
- }
-
- const size_type new_actual_size = resize_policy::get_new_size_for_grow();
- entry_pointer a_new_entries = s_entry_allocator.allocate(new_actual_size);
- resize_policy::notify_grow_resize();
- std::copy(m_a_entries, m_a_entries + m_size, a_new_entries);
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
- m_actual_size = new_actual_size;
- m_a_entries = a_new_entries;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-modify(point_iterator it, const_reference r_new_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- swap_value_imp(it.m_p_e, r_new_val, s_no_throw_copies_ind);
- fix(it.m_p_e);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-fix(entry_pointer p_e)
-{
- size_type i = p_e - m_a_entries;
- if (i > 0 && entry_cmp::operator()(m_a_entries[parent(i)], m_a_entries[i]))
- {
- size_type parent_i = parent(i);
- while (i > 0
- && entry_cmp::operator()(m_a_entries[parent_i], m_a_entries[i]))
- {
- std::swap(m_a_entries[i], m_a_entries[parent_i]);
- i = parent_i;
- parent_i = parent(i);
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return;
- }
-
- while (i < m_size)
- {
- const size_type left_child_i = left_child(i);
- const size_type right_child_i = right_child(i);
- _GLIBCXX_DEBUG_ASSERT(right_child_i > left_child_i);
- const bool smaller_than_left_child = left_child_i < m_size &&
- entry_cmp::operator()(m_a_entries[i], m_a_entries[left_child_i]);
-
- const bool smaller_than_right_child = right_child_i < m_size &&
- entry_cmp::operator()(m_a_entries[i], m_a_entries[right_child_i]);
-
- const bool swap_with_r_child = smaller_than_right_child && (!smaller_than_left_child || entry_cmp::operator()(m_a_entries[left_child_i], m_a_entries[right_child_i]));
-
- const bool swap_with_l_child = !swap_with_r_child && smaller_than_left_child;
-
- if (swap_with_l_child)
- {
- std::swap(m_a_entries[i], m_a_entries[left_child_i]);
- i = left_child_i;
- }
- else if (swap_with_r_child)
- {
- std::swap(m_a_entries[i], m_a_entries[right_child_i]);
- i = right_child_i;
- }
- else
- i = m_size;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap_value_imp(entry_pointer p_e, value_type new_val, true_type)
-{
- * p_e = new_val;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap_value_imp(entry_pointer p_e, const_reference r_new_val, false_type)
-{
- value_type tmp(r_new_val);
- (*p_e)->swap(tmp);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
deleted file mode 100644
index db0a64ea8..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- return (iterator(m_a_entries));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- return (const_iterator(m_a_entries));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{
- return (iterator(m_a_entries + m_size));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{
- return (const_iterator(m_a_entries + m_size));
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
deleted file mode 100644
index 11a7b8915..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn()
-{
- return (*this);
-}
-
-PB_DS_CLASS_T_DEC
-const Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn() const
-{
- return (*this);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
deleted file mode 100644
index 588fb3d1d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/resize_policy.hpp
+++ /dev/null
@@ -1,253 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_policy.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-#ifndef PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP
-#define PB_DS_BINARY_HEAP_RESIZE_POLICY_HPP
-
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-
-#define PB_DS_CLASS_C_DEC resize_policy<Size_Type>
-
- template<typename Size_Type>
- class resize_policy
- {
- public:
- typedef Size_Type size_type;
-
- enum
- {
- min_size = 16
- };
-
- public:
- inline
- resize_policy();
-
- inline void
- swap(PB_DS_CLASS_C_DEC& other);
-
- inline bool
- resize_needed_for_grow(size_type size) const;
-
- inline bool
- resize_needed_for_shrink(size_type size) const;
-
- inline bool
- grow_needed(size_type size) const;
-
- inline bool
- shrink_needed(size_type size) const;
-
- inline size_type
- get_new_size_for_grow() const;
-
- inline size_type
- get_new_size_for_shrink() const;
-
- size_type
- get_new_size_for_arbitrary(size_type size) const;
-
- inline void
- notify_grow_resize();
-
- inline void
- notify_shrink_resize();
-
- void
- notify_arbitrary(size_type actual_size);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_BINARY_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
- enum
- {
- ratio = 8,
- factor = 2
- };
-
- private:
- size_type m_next_shrink_size;
- size_type m_next_grow_size;
- };
-
- PB_DS_CLASS_T_DEC
- inline
- PB_DS_CLASS_C_DEC::
- resize_policy() :
- m_next_shrink_size(0),
- m_next_grow_size(min_size)
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- std::swap(m_next_shrink_size, other.m_next_shrink_size);
- std::swap(m_next_grow_size, other.m_next_grow_size);
- }
-
- PB_DS_CLASS_T_DEC
- inline bool
- PB_DS_CLASS_C_DEC::
- resize_needed_for_grow(size_type size) const
- {
- _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size);
- return size == m_next_grow_size;
- }
-
- PB_DS_CLASS_T_DEC
- inline bool
- PB_DS_CLASS_C_DEC::
- resize_needed_for_shrink(size_type size) const
- {
- _GLIBCXX_DEBUG_ASSERT(size <= m_next_grow_size);
- return size == m_next_shrink_size;
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_new_size_for_grow() const
- { return m_next_grow_size* factor; }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_new_size_for_shrink() const
- {
- const size_type half_size = m_next_grow_size / factor;
- return std::max(static_cast<size_type>(min_size), half_size);
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_new_size_for_arbitrary(size_type size) const
- {
- size_type ret = min_size;
- while (ret < size)
- ret *= factor;
- return ret;
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- notify_grow_resize()
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size);
- m_next_grow_size *= factor;
- m_next_shrink_size = m_next_grow_size / ratio;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- notify_shrink_resize()
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- m_next_shrink_size /= factor;
- if (m_next_shrink_size == 1)
- m_next_shrink_size = 0;
-
- m_next_grow_size =
- std::max(m_next_grow_size / factor, static_cast<size_type>(min_size));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- notify_arbitrary(size_type actual_size)
- {
- m_next_grow_size = actual_size;
- m_next_shrink_size = m_next_grow_size / ratio;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- assert_valid() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_next_shrink_size == 0 ||
- m_next_shrink_size* ratio == m_next_grow_size);
-
- _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= min_size);
- }
-#endif
-
-#ifdef PB_DS_BINARY_HEAP_TRACE_
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- trace() const
- {
- std::cerr << "shrink = " << m_next_shrink_size <<
- " grow = " << m_next_grow_size << std::endl;
- }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
deleted file mode 100644
index 04b7d548f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,172 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-void
-PB_DS_CLASS_C_DEC::
-split(Pred pred, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- typedef
- typename entry_pred<
- value_type,
- Pred,
- simple_value,
- Allocator>::type
- pred_t;
-
- const size_type left = partition(pred_t(pred));
-
- _GLIBCXX_DEBUG_ASSERT(m_size >= left);
-
- const size_type ersd = m_size - left;
-
- _GLIBCXX_DEBUG_ASSERT(m_size >= ersd);
-
- const size_type actual_size =
- resize_policy::get_new_size_for_arbitrary(left);
-
- const size_type other_actual_size =
- other.get_new_size_for_arbitrary(ersd);
-
- entry_pointer a_entries = NULL;
- entry_pointer a_other_entries = NULL;
-
- __try
- {
- a_entries = s_entry_allocator.allocate(actual_size);
-
- a_other_entries = s_entry_allocator.allocate(other_actual_size);
- }
- __catch(...)
- {
- if (a_entries != NULL)
- s_entry_allocator.deallocate(a_entries, actual_size);
-
- if (a_other_entries != NULL)
- s_entry_allocator.deallocate(a_other_entries, other_actual_size);
-
- __throw_exception_again;
- };
-
- for (size_type i = 0; i < other.m_size; ++i)
- erase_at(other.m_a_entries, i, s_no_throw_copies_ind);
-
- _GLIBCXX_DEBUG_ASSERT(actual_size >= left);
- std::copy(m_a_entries, m_a_entries + left, a_entries);
- std::copy(m_a_entries + left, m_a_entries + m_size, a_other_entries);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
- s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
-
- m_actual_size = actual_size;
- other.m_actual_size = other_actual_size;
-
- m_size = left;
- other.m_size = ersd;
-
- m_a_entries = a_entries;
- other.m_a_entries = a_other_entries;
-
- std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
- std::make_heap(other.m_a_entries, other.m_a_entries + other.m_size, static_cast<entry_cmp& >(other));
-
- resize_policy::notify_arbitrary(m_actual_size);
- other.notify_arbitrary(other.m_actual_size);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- const size_type len = m_size + other.m_size;
- const size_type actual_size = resize_policy::get_new_size_for_arbitrary(len);
-
- entry_pointer a_entries = NULL;
- entry_pointer a_other_entries = NULL;
-
- __try
- {
- a_entries = s_entry_allocator.allocate(actual_size);
- a_other_entries = s_entry_allocator.allocate(resize_policy::min_size);
- }
- __catch(...)
- {
- if (a_entries != NULL)
- s_entry_allocator.deallocate(a_entries, actual_size);
-
- if (a_other_entries != NULL)
- s_entry_allocator.deallocate(a_other_entries, resize_policy::min_size);
-
- __throw_exception_again;
- }
-
- std::copy(m_a_entries, m_a_entries + m_size, a_entries);
- std::copy(other.m_a_entries, other.m_a_entries + other.m_size, a_entries + m_size);
-
- s_entry_allocator.deallocate(m_a_entries, m_actual_size);
- m_a_entries = a_entries;
- m_size = len;
- m_actual_size = actual_size;
-
- resize_policy::notify_arbitrary(actual_size);
-
- std::make_heap(m_a_entries, m_a_entries + m_size, static_cast<entry_cmp& >(*this));
-
- s_entry_allocator.deallocate(other.m_a_entries, other.m_actual_size);
- other.m_a_entries = a_other_entries;
- other.m_size = 0;
- other.m_actual_size = resize_policy::min_size;
-
- other.notify_arbitrary(resize_policy::min_size);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
deleted file mode 100644
index 36bd66f75..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binary_heap_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains an implementation class for a binary_heap.
- */
-
-#ifdef PB_DS_BINARY_HEAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << this << std::endl;
-
- std::cerr << m_a_entries << std::endl;
-
- for (size_type i = 0; i < m_size; ++i)
- trace_entry(m_a_entries[i], s_no_throw_copies_ind);
-
- std::cerr << std::endl;
-
- std::cerr << "size = " << m_size << " " << "actual_size = " << m_actual_size << std::endl;
-
- resize_policy::trace();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_entry(const entry& r_e, false_type) const
-{
- std::cout << r_e << " " <<* r_e << std::endl;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_entry(const entry& r_e, true_type) const
-{
- std::cout << r_e << std::endl;
-}
-
-#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
deleted file mode 100644
index 3b4d6e91e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file binomial_heap_.hpp
- * Contains an implementation class for a binomial heap.
- */
-
-/*
- * Binomial heap.
- * Vuillemin J is the mastah.
- * Modified from CLRS.
- */
-
-#include <debug/debug.h>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- binomial_heap_<Value_Type, Cmp_Fn, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
-
- /**
- * class description = "8y|\|0|\/|i41 h34p 74813">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class binomial_heap_ : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
- typedef typename base_type::node_pointer node_pointer;
- typedef typename base_type::const_node_pointer const_node_pointer;
-
- public:
- typedef Value_Type value_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef typename base_type::pointer pointer;
- typedef typename base_type::const_pointer const_pointer;
- typedef typename base_type::reference reference;
- typedef typename base_type::const_reference const_reference;
- typedef typename base_type::const_point_iterator const_point_iterator;
- typedef typename base_type::point_iterator point_iterator;
- typedef typename base_type::const_iterator const_iterator;
- typedef typename base_type::iterator iterator;
- typedef typename base_type::cmp_fn cmp_fn;
- typedef typename base_type::allocator_type allocator_type;
-
- binomial_heap_();
-
- binomial_heap_(const Cmp_Fn& r_cmp_fn);
-
- binomial_heap_(const PB_DS_CLASS_C_DEC& other);
-
- ~binomial_heap_();
-
- protected:
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
- };
-
-#include <ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_BASE_C_DEC
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index ef0937e42..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,61 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation for binomial_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_(const Cmp_Fn& r_cmp_fn) :
- PB_DS_BASE_C_DEC(r_cmp_fn)
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_(const PB_DS_CLASS_C_DEC& other) :
- PB_DS_BASE_C_DEC(other)
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~binomial_heap_() { }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
deleted file mode 100644
index 10bec6959..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation for binomial_heap_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{ base_type::assert_valid(true); }
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
deleted file mode 100644
index 1d66d1b14..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp
+++ /dev/null
@@ -1,234 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file binomial_heap_base_.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-#ifndef PB_DS_BINOMIAL_HEAP_BASE_HPP
-#define PB_DS_BINOMIAL_HEAP_BASE_HPP
-
-/*
- * Binomial heap base.
- * Vuillemin J is the mastah.
- * Modified from CLRS.
- */
-
-#include <debug/debug.h>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
- typename Allocator::size_type, \
- Allocator, false>
-#else
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
- typename Allocator::size_type, Allocator>
-#endif
-
- /**
- * class description = "8y|\|0|\/|i41 h34p 74813">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class binomial_heap_base_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- protected:
- typedef typename base_type::node node;
-
- typedef typename base_type::node_pointer node_pointer;
-
- typedef typename base_type::const_node_pointer const_node_pointer;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- typedef
- typename PB_DS_BASE_C_DEC::const_point_iterator
- const_point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::iterator iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
- public:
-
- inline point_iterator
- push(const_reference r_val);
-
- void
- modify(point_iterator it, const_reference r_new_val);
-
- inline const_reference
- top() const;
-
- void
- pop();
-
- void
- erase(point_iterator it);
-
- inline void
- clear();
-
- template<typename Pred>
- size_type
- erase_if(Pred pred);
-
- template<typename Pred>
- void
- split(Pred pred, PB_DS_CLASS_C_DEC& other);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
- protected:
-
- binomial_heap_base_();
-
- binomial_heap_base_(const Cmp_Fn& r_cmp_fn);
-
- binomial_heap_base_(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~binomial_heap_base_();
-
- template<typename It>
- void
- copy_from_range(It first_it, It last_it);
-
- inline void
- find_max();
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid(bool strictly_binomial) const;
-
- void
- assert_max() const;
-#endif
-
- private:
-
- inline node_pointer
- fix(node_pointer p_nd) const;
-
- inline void
- insert_node(node_pointer p_nd);
-
- inline void
- remove_parentless_node(node_pointer p_nd);
-
- inline node_pointer
- join(node_pointer p_lhs, node_pointer p_rhs) const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_node_consistent(const_node_pointer, bool, bool) const;
-#endif
-
- protected:
- node_pointer m_p_max;
- };
-
-#include <ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_BASE_C_DEC
-
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 274c93378..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- push(*(first_it++));
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_base_() :
- m_p_max(NULL)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_base_(const Cmp_Fn& r_cmp_fn) :
- PB_DS_BASE_C_DEC(r_cmp_fn),
- m_p_max(NULL)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-binomial_heap_base_(const PB_DS_CLASS_C_DEC& other) :
- PB_DS_BASE_C_DEC(other),
- m_p_max(NULL)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
-
- base_type::swap(other);
-
- std::swap(m_p_max, other.m_p_max);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~binomial_heap_base_()
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
deleted file mode 100644
index 9a07f0e7d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,98 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid(bool strictly_binomial) const
-{
- base_type::assert_valid();
- assert_node_consistent(base_type::m_p_root, strictly_binomial, true);
- assert_max();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_max() const
-{
- if (m_p_max == NULL)
- return;
- _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL);
- for (const_iterator it = base_type::begin(); it != base_type::end(); ++it)
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value,
- it.m_p_nd->m_value));
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent(const_node_pointer p_nd, bool strictly_binomial,
- bool increasing) const
-{
- _GLIBCXX_DEBUG_ASSERT(increasing || strictly_binomial);
- base_type::assert_node_consistent(p_nd, false);
- if (p_nd == NULL)
- return;
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == base_type::degree(p_nd));
- _GLIBCXX_DEBUG_ASSERT(base_type::size_under_node(p_nd) ==
- static_cast<size_type>(1 << p_nd->m_metadata));
- assert_node_consistent(p_nd->m_p_next_sibling, strictly_binomial, increasing);
- assert_node_consistent(p_nd->m_p_l_child, true, false);
- if (p_nd->m_p_next_sibling != NULL)
- {
- if (increasing)
- {
- if (strictly_binomial)
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
- < p_nd->m_p_next_sibling->m_metadata);
- else
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
- <= p_nd->m_p_next_sibling->m_metadata);
- }
- else
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata
- > p_nd->m_p_next_sibling->m_metadata);
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
deleted file mode 100644
index a4cf90c20..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,192 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-pop()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- if (m_p_max == NULL)
- find_max();
-
- _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL);
-
- node_pointer p_nd = m_p_max;
-
- remove_parentless_node(m_p_max);
-
- base_type::actual_erase_node(p_nd);
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-remove_parentless_node(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(base_type::parent(p_nd) == NULL);
-
- node_pointer p_cur_root = p_nd == base_type::m_p_root?
- p_nd->m_p_next_sibling :
- base_type::m_p_root;
-
- if (p_cur_root != NULL)
- p_cur_root->m_p_prev_or_parent = NULL;
-
- if (p_nd->m_p_prev_or_parent != NULL)
- p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling;
-
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
-
- node_pointer p_child = p_nd->m_p_l_child;
-
- if (p_child != NULL)
- {
- p_child->m_p_prev_or_parent = NULL;
-
- while (p_child->m_p_next_sibling != NULL)
- p_child = p_child->m_p_next_sibling;
- }
-
- m_p_max = NULL;
-
- base_type::m_p_root = join(p_cur_root, p_child);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- base_type::clear();
-
- m_p_max = NULL;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase(point_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- base_type::bubble_to_top(it.m_p_nd);
-
- remove_parentless_node(it.m_p_nd);
-
- base_type::actual_erase_node(it.m_p_nd);
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- }
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- return 0;
- }
-
- base_type::to_linked_list();
-
- node_pointer p_out = base_type::prune(pred);
-
- size_type ersd = 0;
-
- while (p_out != NULL)
- {
- ++ersd;
-
- node_pointer p_next = p_out->m_p_next_sibling;
-
- base_type::actual_erase_node(p_out);
-
- p_out = p_next;
- }
-
- node_pointer p_cur = base_type::m_p_root;
-
- base_type::m_p_root = NULL;
-
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
-
- p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = NULL;
-
- p_cur->m_metadata = 0;
-
- p_cur->m_p_next_sibling = base_type::m_p_root;
-
- if (base_type::m_p_root != NULL)
- base_type::m_p_root->m_p_prev_or_parent = p_cur;
-
- base_type::m_p_root = p_cur;
-
- base_type::m_p_root = fix(base_type::m_p_root);
-
- p_cur = p_next;
- }
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- return ersd;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
deleted file mode 100644
index ad7f65129..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/find_fn_imps.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(false);)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- if (m_p_max == NULL)
- const_cast<PB_DS_CLASS_C_DEC* >(this)->find_max();
-
- _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL);
- return m_p_max->m_value;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-find_max()
-{
- node_pointer p_cur = base_type::m_p_root;
-
- m_p_max = p_cur;
-
- while (p_cur != NULL)
- {
- if (Cmp_Fn::operator()(m_p_max->m_value, p_cur->m_value))
- m_p_max = p_cur;
-
- p_cur = p_cur->m_p_next_sibling;
- }
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
deleted file mode 100644
index e67d0df14..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-push(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
-
- insert_node(p_nd);
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- return point_iterator(p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-insert_node(node_pointer p_nd)
-{
- if (base_type::m_p_root == NULL)
- {
- p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent =
- p_nd->m_p_l_child = NULL;
-
- p_nd->m_metadata = 0;
-
- base_type::m_p_root = p_nd;
-
- return;
- }
-
- if (base_type::m_p_root->m_metadata > 0)
- {
- p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = NULL;
-
- p_nd->m_p_next_sibling = base_type::m_p_root;
-
- base_type::m_p_root->m_p_prev_or_parent = p_nd;
-
- base_type::m_p_root = p_nd;
-
- p_nd->m_metadata = 0;
-
- return;
- }
-
- if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value))
- {
- p_nd->m_p_next_sibling = base_type::m_p_root->m_p_next_sibling;
-
- p_nd->m_p_prev_or_parent = NULL;
-
- p_nd->m_metadata = 1;
-
- p_nd->m_p_l_child = base_type::m_p_root;
-
- base_type::m_p_root->m_p_prev_or_parent = p_nd;
-
- base_type::m_p_root->m_p_next_sibling = NULL;
-
- base_type::m_p_root = p_nd;
- }
- else
- {
- p_nd->m_p_next_sibling = NULL;
-
- p_nd->m_p_l_child = NULL;
-
- p_nd->m_p_prev_or_parent = base_type::m_p_root;
-
- p_nd->m_metadata = 0;
-
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root->m_p_l_child == 0);
- base_type::m_p_root->m_p_l_child = p_nd;
-
- base_type::m_p_root->m_metadata = 1;
- }
-
- base_type::m_p_root = fix(base_type::m_p_root);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-fix(node_pointer p_nd) const
-{
- while (p_nd->m_p_next_sibling != NULL&&
- p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata)
- {
- node_pointer p_next = p_nd->m_p_next_sibling;
-
- if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
- {
- p_next->m_p_prev_or_parent =
- p_nd->m_p_prev_or_parent;
-
- if (p_nd->m_p_prev_or_parent != NULL)
- p_nd->m_p_prev_or_parent->m_p_next_sibling = p_next;
-
- base_type::make_child_of(p_nd, p_next);
-
- ++p_next->m_metadata;
-
- p_nd = p_next;
- }
- else
- {
- p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
-
- if (p_nd->m_p_next_sibling != NULL)
- p_next->m_p_next_sibling = NULL;
-
- base_type::make_child_of(p_next, p_nd);
-
- ++p_nd->m_metadata;
- }
- }
-
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
-
- return p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-modify(point_iterator it, const_reference r_new_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- node_pointer p_nd = it.m_p_nd;
-
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false);)
-
- const bool bubble_up = Cmp_Fn::operator()(p_nd->m_value, r_new_val);
-
- p_nd->m_value = r_new_val;
-
- if (bubble_up)
- {
- node_pointer p_parent = base_type::parent(p_nd);
-
- while (p_parent != NULL&&
- Cmp_Fn::operator()(p_parent->m_value, p_nd->m_value))
- {
- base_type::swap_with_parent(p_nd, p_parent);
-
- p_parent = base_type::parent(p_nd);
- }
-
- if (p_nd->m_p_prev_or_parent == NULL)
- base_type::m_p_root = p_nd;
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
-
- return;
- }
-
- base_type::bubble_to_top(p_nd);
-
- remove_parentless_node(p_nd);
-
- insert_node(p_nd);
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
deleted file mode 100644
index a701937cb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/binomial_heap_base_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,232 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for a base of binomial heaps.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-void
-PB_DS_CLASS_C_DEC::
-split(Pred pred, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
-
- other.clear();
-
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
-
- return;
- }
-
- base_type::to_linked_list();
-
- node_pointer p_out = base_type::prune(pred);
-
- while (p_out != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
- --base_type::m_size;
-
- ++other.m_size;
-
- node_pointer p_next = p_out->m_p_next_sibling;
-
- p_out->m_p_l_child = p_out->m_p_prev_or_parent = NULL;
-
- p_out->m_metadata = 0;
-
- p_out->m_p_next_sibling = other.m_p_root;
-
- if (other.m_p_root != NULL)
- other.m_p_root->m_p_prev_or_parent = p_out;
-
- other.m_p_root = p_out;
-
- other.m_p_root = other.fix(other.m_p_root);
-
- p_out = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
-
- node_pointer p_cur = base_type::m_p_root;
-
- base_type::m_p_root = NULL;
-
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
-
- p_cur->m_p_l_child = p_cur->m_p_prev_or_parent = NULL;
-
- p_cur->m_metadata = 0;
-
- p_cur->m_p_next_sibling = base_type::m_p_root;
-
- if (base_type::m_p_root != NULL)
- base_type::m_p_root->m_p_prev_or_parent = p_cur;
-
- base_type::m_p_root = p_cur;
-
- base_type::m_p_root = fix(base_type::m_p_root);
-
- p_cur = p_next;
- }
-
- m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
-
- node_pointer p_other = other.m_p_root;
-
- if (p_other != NULL)
- do
- {
- node_pointer p_next = p_other->m_p_next_sibling;
-
- std::swap(p_other->m_p_next_sibling, p_other->m_p_prev_or_parent);
-
- p_other = p_next;
- }
- while (p_other != NULL);
-
- base_type::m_p_root = join(base_type::m_p_root, other.m_p_root);
- base_type::m_size += other.m_size;
- m_p_max = NULL;
-
- other.m_p_root = NULL;
- other.m_size = 0;
- other.m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid(true);)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(true);)
- }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-join(node_pointer p_lhs, node_pointer p_rhs) const
-{
- node_pointer p_ret = NULL;
-
- node_pointer p_cur = NULL;
-
- while (p_lhs != NULL || p_rhs != NULL)
- {
- if (p_rhs == NULL)
- {
- if (p_cur == NULL)
- p_ret = p_cur = p_lhs;
- else
- {
- p_cur->m_p_next_sibling = p_lhs;
-
- p_lhs->m_p_prev_or_parent = p_cur;
- }
-
- p_cur = p_lhs = NULL;
- }
- else if (p_lhs == NULL || p_rhs->m_metadata < p_lhs->m_metadata)
- {
- if (p_cur == NULL)
- {
- p_ret = p_cur = p_rhs;
-
- p_rhs = p_rhs->m_p_prev_or_parent;
- }
- else
- {
- p_cur->m_p_next_sibling = p_rhs;
-
- p_rhs = p_rhs->m_p_prev_or_parent;
-
- p_cur->m_p_next_sibling->m_p_prev_or_parent = p_cur;
-
- p_cur = p_cur->m_p_next_sibling;
- }
- }
- else if (p_lhs->m_metadata < p_rhs->m_metadata)
- {
- if (p_cur == NULL)
- p_ret = p_cur = p_lhs;
- else
- {
- p_cur->m_p_next_sibling = p_lhs;
-
- p_lhs->m_p_prev_or_parent = p_cur;
-
- p_cur = p_cur->m_p_next_sibling;
- }
-
- p_lhs = p_cur->m_p_next_sibling;
- }
- else
- {
- node_pointer p_next_rhs = p_rhs->m_p_prev_or_parent;
-
- p_rhs->m_p_next_sibling = p_lhs;
-
- p_lhs = fix(p_rhs);
-
- p_rhs = p_next_rhs;
- }
- }
-
- if (p_cur != NULL)
- p_cur->m_p_next_sibling = NULL;
-
- if (p_ret != NULL)
- p_ret->m_p_prev_or_parent = NULL;
-
- return p_ret;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
deleted file mode 100644
index f5efabe08..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp
+++ /dev/null
@@ -1,636 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cc_ht_map_.hpp
- * Contains an implementation class for cc_ht_map_.
- */
-
-#include <utility>
-#include <iterator>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp>
-#ifdef _GLIBCXX_DEBUG
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#endif
-#ifdef PB_DS_HT_MAP_TRACE_
-#include <iostream>
-#endif
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, typename Hash_Fn, \
- typename Eq_Fn, typename Allocator, bool Store_Hash, \
- typename Comb_Hash_Fn, typename Resize_Policy>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME cc_ht_map_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME cc_ht_map_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator, \
- Store_Hash, Comb_Hash_Fn, Resize_Policy>
-
-#define PB_DS_HASH_EQ_FN_C_DEC \
- hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash>
-
-#define PB_DS_RANGED_HASH_FN_C_DEC \
- ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, Store_Hash>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, Store_Hash>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, Eq_Fn, typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#endif
-
- // <011i$i0|\|-<|-|4i|\|i|\|g |-|4$|-| 74813.
- template<typename Key,
- typename Mapped,
- typename Hash_Fn,
- typename Eq_Fn,
- typename Allocator,
- bool Store_Hash,
- typename Comb_Hash_Fn,
- typename Resize_Policy >
- class PB_DS_CLASS_NAME:
-#ifdef _GLIBCXX_DEBUG
- protected PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
- public PB_DS_HASH_EQ_FN_C_DEC,
- public Resize_Policy,
- public PB_DS_RANGED_HASH_FN_C_DEC,
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
- typedef typename traits_base::comp_hash comp_hash;
- typedef typename traits_base::value_type value_type_;
- typedef typename traits_base::pointer pointer_;
- typedef typename traits_base::const_pointer const_pointer_;
- typedef typename traits_base::reference reference_;
- typedef typename traits_base::const_reference const_reference_;
-
- struct entry : public traits_base::stored_value_type
- {
- typename Allocator::template rebind<entry>::other::pointer m_p_next;
- };
-
- typedef cond_dealtor<entry, Allocator> cond_dealtor_t;
-
- typedef typename Allocator::template rebind<entry>::other entry_allocator;
- typedef typename entry_allocator::pointer entry_pointer;
- typedef typename entry_allocator::const_pointer const_entry_pointer;
- typedef typename entry_allocator::reference entry_reference;
- typedef typename entry_allocator::const_reference const_entry_reference;
-
- typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator;
- typedef typename entry_pointer_allocator::pointer entry_pointer_array;
-
- typedef PB_DS_RANGED_HASH_FN_C_DEC ranged_hash_fn_base;
- typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base;
- typedef Resize_Policy resize_base;
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
-#define PB_DS_GEN_POS std::pair<entry_pointer, typename Allocator::size_type>
-
-#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
-
-#undef PB_DS_GEN_POS
-
- public:
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef Hash_Fn hash_fn;
- typedef Eq_Fn eq_fn;
- typedef Comb_Hash_Fn comb_hash_fn;
- typedef Resize_Policy resize_policy;
-
- enum
- {
- store_hash = Store_Hash
- };
-
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef point_iterator_ point_iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_point_iterator_ point_iterator;
-#endif
-
- typedef const_point_iterator_ const_point_iterator;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef iterator_ iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_iterator_ iterator;
-#endif
-
- typedef const_iterator_ const_iterator;
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const Hash_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Hash_Fn&,
- const Resize_Policy&);
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- virtual
- ~PB_DS_CLASS_NAME();
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- void
- initialize();
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- inline bool
- empty() const;
-
- Hash_Fn&
- get_hash_fn();
-
- const Hash_Fn&
- get_hash_fn() const;
-
- Eq_Fn&
- get_eq_fn();
-
- const Eq_Fn&
- get_eq_fn() const;
-
- Comb_Hash_Fn&
- get_comb_hash_fn();
-
- const Comb_Hash_Fn&
- get_comb_hash_fn() const;
-
- Resize_Policy&
- get_resize_policy();
-
- const Resize_Policy&
- get_resize_policy() const;
-
- inline std::pair<point_iterator, bool>
- insert(const_reference r_val)
- { return insert_imp(r_val, traits_base::m_store_extra_indicator); }
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- return (subscript_imp(r_key, traits_base::m_store_extra_indicator));
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline point_iterator
- find(const_key_reference);
-
- inline const_point_iterator
- find(const_key_reference) const;
-
- inline point_iterator
- find_end();
-
- inline const_point_iterator
- find_end() const;
-
- inline bool
- erase(const_key_reference);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- void
- clear();
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_HT_MAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
- void
- deallocate_all();
-
- inline bool
- do_resize_if_needed();
-
- inline void
- do_resize_if_needed_no_throw();
-
- void
- resize_imp(size_type new_size);
-
- void
- do_resize(size_type new_size);
-
- void
- resize_imp_no_exceptions(size_type, entry_pointer_array, size_type);
-
- inline entry_pointer
- resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, false_type);
-
- inline entry_pointer
- resize_imp_no_exceptions_reassign_pointer(entry_pointer, entry_pointer_array, true_type);
-
- void
- deallocate_links_in_list(entry_pointer);
-
- inline entry_pointer
- get_entry(const_reference, false_type);
-
- inline entry_pointer
- get_entry(const_reference, true_type);
-
- inline void
- rels_entry(entry_pointer);
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- inline mapped_reference
- subscript_imp(const_key_reference r_key, false_type)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const size_type pos = ranged_hash_fn_base::operator()(r_key);
- entry_pointer p_e = m_entries[pos];
- resize_base::notify_insert_search_start();
-
- while (p_e != NULL
- && !hash_eq_fn_base::operator()(p_e->m_value.first, r_key))
- {
- resize_base::notify_insert_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_insert_search_end();
- if (p_e != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return (p_e->m_value.second);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return insert_new_imp(value_type(r_key, mapped_type()), pos)->second;
- }
-
- inline mapped_reference
- subscript_imp(const_key_reference r_key, true_type)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key);
- entry_pointer p_e = m_entries[pos_hash_pair.first];
- resize_base::notify_insert_search_start();
- while (p_e != NULL &&
- !hash_eq_fn_base::operator()(p_e->m_value.first, p_e->m_hash, r_key, pos_hash_pair.second))
- {
- resize_base::notify_insert_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_insert_search_end();
- if (p_e != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return p_e->m_value.second;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return insert_new_imp(value_type(r_key, mapped_type()),
- pos_hash_pair)->second;
- }
-#endif
-
- inline std::pair<point_iterator, bool>
- insert_imp(const_reference, false_type);
-
- inline std::pair<point_iterator, bool>
- insert_imp(const_reference, true_type);
-
- inline pointer
- insert_new_imp(const_reference r_val, size_type pos)
- {
- if (do_resize_if_needed())
- pos = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val));
-
- // Following lines might throw an exception.
- entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator);
-
- // At this point no exceptions can be thrown.
- p_e->m_p_next = m_entries[pos];
- m_entries[pos] = p_e;
- resize_base::notify_inserted(++m_num_used_e);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return &p_e->m_value;
- }
-
- inline pointer
- insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair)
- {
- // Following lines might throw an exception.
- if (do_resize_if_needed())
- r_pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(r_val));
-
- entry_pointer p_e = get_entry(r_val, traits_base::m_no_throw_copies_indicator);
-
- // At this point no exceptions can be thrown.
- p_e->m_hash = r_pos_hash_pair.second;
- p_e->m_p_next = m_entries[r_pos_hash_pair.first];
- m_entries[r_pos_hash_pair.first] = p_e;
- resize_base::notify_inserted(++m_num_used_e);
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return &p_e->m_value;
- }
-
- inline pointer
- find_key_pointer(const_key_reference r_key, false_type)
- {
- entry_pointer p_e = m_entries[ranged_hash_fn_base::operator()(r_key)];
- resize_base::notify_find_search_start();
- while (p_e != NULL &&
- !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
- {
- resize_base::notify_find_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_find_search_end();
-
-#ifdef _GLIBCXX_DEBUG
- if (p_e == NULL)
- debug_base::check_key_does_not_exist(r_key);
- else
- debug_base::check_key_exists(r_key);
-#endif
- return &p_e->m_value;
- }
-
- inline pointer
- find_key_pointer(const_key_reference r_key, true_type)
- {
- comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(r_key);
- entry_pointer p_e = m_entries[pos_hash_pair.first];
- resize_base::notify_find_search_start();
- while (p_e != NULL &&
- !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
- p_e->m_hash,
- r_key, pos_hash_pair.second))
- {
- resize_base::notify_find_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_find_search_end();
-
-#ifdef _GLIBCXX_DEBUG
- if (p_e == NULL)
- debug_base::check_key_does_not_exist(r_key);
- else
- debug_base::check_key_exists(r_key);
-#endif
- return &p_e->m_value;
- }
-
- inline bool
- erase_in_pos_imp(const_key_reference, size_type);
-
- inline bool
- erase_in_pos_imp(const_key_reference, const comp_hash&);
-
- inline void
- erase_entry_pointer(entry_pointer&);
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- void
- inc_it_state(pointer& r_p_value,
- std::pair<entry_pointer, size_type>& r_pos) const
- {
- inc_it_state((const_mapped_pointer& )r_p_value, r_pos);
- }
-#endif
-
- void
- inc_it_state(const_pointer& r_p_value,
- std::pair<entry_pointer, size_type>& r_pos) const
- {
- _GLIBCXX_DEBUG_ASSERT(r_p_value != NULL);
- r_pos.first = r_pos.first->m_p_next;
- if (r_pos.first != NULL)
- {
- r_p_value = &r_pos.first->m_value;
- return;
- }
-
- for (++r_pos.second; r_pos.second < m_num_e; ++r_pos.second)
- if (m_entries[r_pos.second] != NULL)
- {
- r_pos.first = m_entries[r_pos.second];
- r_p_value = &r_pos.first->m_value;
- return;
- }
- r_p_value = NULL;
- }
-
- void
- get_start_it_state(pointer& r_p_value,
- std::pair<entry_pointer, size_type>& r_pos) const
- {
- for (r_pos.second = 0; r_pos.second < m_num_e; ++r_pos.second)
- if (m_entries[r_pos.second] != NULL)
- {
- r_pos.first = m_entries[r_pos.second];
- r_p_value = &r_pos.first->m_value;
- return;
- }
- r_p_value = NULL;
- }
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_entry_pointer_array_valid(const entry_pointer_array) const;
-
- void
- assert_entry_pointer_valid(const entry_pointer, true_type) const;
-
- void
- assert_entry_pointer_valid(const entry_pointer, false_type) const;
-#endif
-
-#ifdef PB_DS_HT_MAP_TRACE_
- void
- trace_list(const_entry_pointer) const;
-#endif
-
- private:
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- friend class iterator_;
-#endif
-
- friend class const_iterator_;
-
- static entry_allocator s_entry_allocator;
- static entry_pointer_allocator s_entry_pointer_allocator;
- static iterator s_end_it;
- static const_iterator s_const_end_it;
- static point_iterator s_find_end_it;
- static const_point_iterator s_const_find_end_it;
-
- size_type m_num_e;
- size_type m_num_used_e;
- entry_pointer_array m_entries;
-
- enum
- {
- store_hash_ok = !Store_Hash
- || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value
- };
-
- PB_DS_STATIC_ASSERT(sth, store_hash_ok);
- };
-
-#include <ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_HASH_EQ_FN_C_DEC
-#undef PB_DS_RANGED_HASH_FN_C_DEC
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_V2F
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
deleted file mode 100644
index 1a61893d1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cmp_fn_imps.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cmp_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s entire container comparison related
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Other_HT_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-operator==(const Other_HT_Map_Type& other) const
-{ return cmp_with_other(other); }
-
-PB_DS_CLASS_T_DEC
-template<typename Other_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-cmp_with_other(const Other_Map_Type& other) const
-{
- if (size() != other.size())
- return false;
-
- for (typename Other_Map_Type::const_iterator it = other.begin();
- it != other.end(); ++it)
- {
- const_key_reference r_key = const_key_reference(PB_DS_V2F(*it));
-
- const_mapped_pointer p_mapped_value =
- const_cast<PB_DS_CLASS_C_DEC& >(*this).
- find_key_pointer(r_key, traits_base::m_store_extra_indicator);
-
- if (p_mapped_value == NULL)
- return false;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- if (p_mapped_value->second != it->second)
- return false;
-#endif
- }
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Other_HT_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-operator!=(const Other_HT_Map_Type& other) const
-{ return !operator==(other); }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
deleted file mode 100644
index fa3f31df0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/cond_key_dtor_entry_dealtor.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_key_dtor_entry_dealtor.hpp
- * Contains a conditional key destructor, used for exception handling.
- */
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC template<typename HT_Map>
-#define PB_DS_CLASS_C_DEC PB_DS_CKDED_CLASS_NAME<HT_Map>
-
- /**
- * A conditional key destructor, used for exception handling.
- **/
- template<typename HT_Map>
- class PB_DS_CKDED_CLASS_NAME
- {
- public:
- typedef typename HT_Map::entry entry;
- typedef typename HT_Map::entry_allocator entry_allocator;
- typedef typename HT_Map::key_type key_type;
-
- inline
- PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e);
-
- inline
- ~PB_DS_CKDED_CLASS_NAME();
-
- inline void
- set_key_destruct();
-
- inline void
- set_no_action_destructor();
-
- protected:
- entry_allocator* const m_p_a;
- entry* const m_p_e;
-
- bool m_key_destruct;
- bool m_no_action_destructor;
- };
-
- PB_DS_CLASS_T_DEC
- inline
- PB_DS_CLASS_C_DEC::
- PB_DS_CKDED_CLASS_NAME(entry_allocator* p_a, entry* p_e)
- : m_p_a(p_a), m_p_e(p_e), m_key_destruct(false),
- m_no_action_destructor(false)
- { }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- set_key_destruct()
- { m_key_destruct = true; }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- set_no_action_destructor()
- { m_no_action_destructor = true; }
-
- PB_DS_CLASS_T_DEC
- inline
- PB_DS_CLASS_C_DEC::
- ~PB_DS_CKDED_CLASS_NAME()
- {
- if (m_no_action_destructor)
- return;
- if (m_key_destruct)
- m_p_e->m_value.first.~key_type();
- m_p_a->deallocate(m_p_e, 1);
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
deleted file mode 100644
index 571115373..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,191 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::entry_allocator
-PB_DS_CLASS_C_DEC::s_entry_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::entry_pointer_allocator
-PB_DS_CLASS_C_DEC::s_entry_pointer_allocator;
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME() :
- ranged_hash_fn_base(resize_base::get_nearest_larger_size(1)),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_pointer_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn) :
- ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_pointer_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn) :
- PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
- ranged_hash_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_pointer_allocator.allocate(m_num_e))
-{
- std::fill(m_entries, m_entries + m_num_e, (entry_pointer)NULL);
- Resize_Policy::notify_cleared();
- ranged_hash_fn_base::notify_resized(m_num_e);
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn) :
- PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
- ranged_hash_fn_base(resize_base::get_nearest_larger_size(1),
- r_hash_fn, r_comb_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_pointer_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn, const Comb_Hash_Fn& r_comb_hash_fn, const Resize_Policy& r_resize_policy) :
- PB_DS_HASH_EQ_FN_C_DEC(r_eq_fn),
- Resize_Policy(r_resize_policy),
- ranged_hash_fn_base(resize_base::get_nearest_larger_size(1),
- r_hash_fn, r_comb_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_pointer_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
- PB_DS_HASH_EQ_FN_C_DEC(other),
- resize_base(other), ranged_hash_fn_base(other),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(m_entries = s_entry_pointer_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- __try
- {
- copy_from_range(other.begin(), other.end());
- }
- __catch(...)
- {
- deallocate_all();
- __throw_exception_again;
- }
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_CLASS_NAME()
-{ deallocate_all(); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
-
- std::swap(m_entries, other.m_entries);
- std::swap(m_num_e, other.m_num_e);
- std::swap(m_num_used_e, other.m_num_used_e);
- ranged_hash_fn_base::swap(other);
- hash_eq_fn_base::swap(other);
- resize_base::swap(other);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-deallocate_all()
-{
- clear();
- s_entry_pointer_allocator.deallocate(m_entries, m_num_e);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{
- std::fill(m_entries, m_entries + m_num_e, entry_pointer(NULL));
- Resize_Policy::notify_resized(m_num_e);
- Resize_Policy::notify_cleared();
- ranged_hash_fn_base::notify_resized(m_num_e);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 4f1cce648..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_no_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-constructor_insert_new_imp(const_mapped_reference r_val, size_type pos,
- false_type)
-{
- // Following lines might throw an exception.
- entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator);
-
- // At this point no exceptions can be thrown.
- p->m_p_next = m_entries[pos];
- m_entries[pos] = p;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
deleted file mode 100644
index a2b6fa111..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,56 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-constructor_insert_new_imp(const_reference r_val, size_type pos, true_type)
-{
- // Following lines might throw an exception.
- entry_pointer p = get_entry(r_val, traits_base::s_no_throw_copies_indicator);
-
- // At this point no exceptions can be thrown.
- p->m_p_next = m_entries[pos];
- p->m_hash = ranged_hash_fn_base::operator()((const_key_reference)(PB_DS_V2F(p->m_value))).second;
-
- m_entries[pos] = p;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
deleted file mode 100644
index 4219eef38..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- debug_base::check_size(m_num_used_e);
- assert_entry_pointer_array_valid(m_entries);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_entry_pointer_array_valid(const entry_pointer_array a_p_entries) const
-{
- size_type iterated_num_used_e = 0;
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- entry_pointer p_e = a_p_entries[pos];
- while (p_e != NULL)
- {
- ++iterated_num_used_e;
- assert_entry_pointer_valid(p_e, traits_base::m_store_extra_indicator);
- p_e = p_e->m_p_next;
- }
- }
- _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
-}
-
-#include <ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp>
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 770bed34c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_no_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_entry_pointer_valid(const entry_pointer p, false_type) const
-{ debug_base::check_key_exists(PB_DS_V2F(p->m_value)); }
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
deleted file mode 100644
index 3d17671e9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/debug_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_entry_pointer_valid(const entry_pointer p_e, true_type) const
-{
- debug_base::check_key_exists(PB_DS_V2F(p_e->m_value));
- comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value));
- _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
deleted file mode 100644
index fa09f7348..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/entry_list_fn_imps.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file entry_list_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s entry-list related functions.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-deallocate_links_in_list(entry_pointer p_e)
-{
- while (p_e != NULL)
- {
- entry_pointer p_dealloc_e = p_e;
- p_e = p_e->m_p_next;
- s_entry_allocator.deallocate(p_dealloc_e, 1);
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-get_entry(const_reference r_val, true_type)
-{
- // Following line might throw an exception.
- entry_pointer p_e = s_entry_allocator.allocate(1);
-
- // Following lines* cannot* throw an exception.
- new (&p_e->m_value) value_type(r_val);
- return p_e;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-get_entry(const_reference r_val, false_type)
-{
- // Following line might throw an exception.
- entry_pointer p_e = s_entry_allocator.allocate(1);
- cond_dealtor_t cond(p_e);
-
- // Following lines might throw an exception.
- new (&p_e->m_value) value_type(r_val);
- cond.set_no_action();
- return p_e;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rels_entry(entry_pointer p_e)
-{
- // The following lines cannot throw exceptions (unless if key-data dtors do).
- p_e->m_value.~value_type();
- s_entry_allocator.deallocate(p_e, 1);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
deleted file mode 100644
index 9f9178bc9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s erase related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-erase_entry_pointer(entry_pointer& r_p_e)
-{
- _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(r_p_e->m_value)));
-
- entry_pointer p_e = r_p_e;
- r_p_e = r_p_e->m_p_next;
- rels_entry(p_e);
- _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0);
- resize_base::notify_erased(--m_num_used_e);
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- size_type num_ersd = 0;
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- while (m_entries[pos] != NULL && pred(m_entries[pos]->m_value))
- {
- ++num_ersd;
- entry_pointer p_next_e = m_entries[pos]->m_p_next;
- erase_entry_pointer(m_entries[pos]);
- m_entries[pos] = p_next_e;
- }
-
- entry_pointer p_e = m_entries[pos];
- while (p_e != NULL && p_e->m_p_next != NULL)
- {
- if (pred(p_e->m_p_next->m_value))
- {
- ++num_ersd;
- erase_entry_pointer(p_e->m_p_next);
- }
- else
- p_e = p_e->m_p_next;
- }
- }
-
- do_resize_if_needed_no_throw();
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- for (size_type pos = 0; pos < m_num_e; ++pos)
- while (m_entries[pos] != NULL)
- erase_entry_pointer(m_entries[pos]);
- do_resize_if_needed_no_throw();
- resize_base::notify_cleared();
-}
-
-#include <ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp>
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
deleted file mode 100644
index d24fc31f9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_no_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s erase related functions,
- * when the hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return erase_in_pos_imp(r_key, ranged_hash_fn_base::operator()(r_key));
-}
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase_in_pos_imp(const_key_reference r_key, size_type pos)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- entry_pointer p_e = m_entries[pos];
- resize_base::notify_erase_search_start();
- if (p_e == NULL)
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return false;
- }
-
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_exists(r_key);)
- erase_entry_pointer(m_entries[pos]);
- do_resize_if_needed_no_throw();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return true;
- }
-
- while (true)
- {
- entry_pointer p_next_e = p_e->m_p_next;
- if (p_next_e == NULL)
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return false;
- }
-
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value), r_key))
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- erase_entry_pointer(p_e->m_p_next);
- do_resize_if_needed_no_throw();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return true;
- }
- resize_base::notify_erase_search_collision();
- p_e = p_next_e;
- }
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
deleted file mode 100644
index d72df6962..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s erase related functions,
- * when the hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase_in_pos_imp(const_key_reference r_key, const comp_hash& r_pos_hash_pair)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- entry_pointer p_e = m_entries[r_pos_hash_pair.first];
- resize_base::notify_erase_search_start();
- if (p_e == NULL)
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base:: check_key_does_not_exist(r_key);)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return false;
- }
-
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
- r_key, r_pos_hash_pair.second))
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- erase_entry_pointer(m_entries[r_pos_hash_pair.first]);
- do_resize_if_needed_no_throw();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return true;
- }
-
- while (true)
- {
- entry_pointer p_next_e = p_e->m_p_next;
- if (p_next_e == NULL)
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return false;
- }
-
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_next_e->m_value),
- p_next_e->m_hash, r_key,
- r_pos_hash_pair.second))
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- erase_entry_pointer(p_e->m_p_next);
- do_resize_if_needed_no_throw();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return true;
- }
- resize_base::notify_erase_search_collision();
- p_e = p_next_e;
- }
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
deleted file mode 100644
index 6ca9a03b4..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_fn_imps.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s find related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return find_key_pointer(r_key, traits_base::m_store_extra_indicator);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key) const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return const_cast<PB_DS_CLASS_C_DEC& >(*this).find_key_pointer(r_key,
- traits_base::m_store_extra_indicator);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find_end()
-{ return NULL; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find_end() const
-{ return NULL; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
deleted file mode 100644
index 1db51c990..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/find_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s find related functions,
- * when the hash value is stored.
- */
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
deleted file mode 100644
index dc1519df7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s entire container info related
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{ return m_num_used_e; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return m_entry_allocator.max_size(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return (size() == 0); }
-
-PB_DS_CLASS_T_DEC
-template<typename Other_HT_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-operator==(const Other_HT_Map_Type& other) const
-{ return cmp_with_other(other); }
-
-PB_DS_CLASS_T_DEC
-template<typename Other_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-cmp_with_other(const Other_Map_Type& other) const
-{
- if (size() != other.size())
- return false;
-
- for (typename Other_Map_Type::const_iterator it = other.begin();
- it != other.end(); ++it)
- {
- const_key_reference r_key =(const_key_reference)PB_DS_V2F(*it);
- const_mapped_pointer p_mapped_value =
- const_cast<PB_DS_CLASS_C_DEC& >(*this).
- find_key_pointer(r_key, traits_base::m_store_extra_indicator);
-
- if (p_mapped_value == NULL)
- return false;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- if (p_mapped_value->second != it->second)
- return false;
-#endif
- }
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Other_HT_Map_Type>
-bool
-PB_DS_CLASS_C_DEC::
-operator!=(const Other_HT_Map_Type& other) const
-{ return !operator==(other); }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
deleted file mode 100644
index 0679dbe6e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s insert related functions.
- */
-
-#include <ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp>
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 7215ccd86..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_no_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s insert related functions,
- * when the hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_imp(const_reference r_val, false_type)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const_key_reference r_key = PB_DS_V2F(r_val);
- const size_type pos = ranged_hash_fn_base::operator()(r_key);
- entry_pointer p_e = m_entries[pos];
- resize_base::notify_insert_search_start();
-
- while (p_e != NULL && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
- r_key))
- {
- resize_base::notify_insert_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_insert_search_end();
- if (p_e != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return std::make_pair(&p_e->m_value, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return std::make_pair(insert_new_imp(r_val, pos), true);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
deleted file mode 100644
index fbc284f80..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/insert_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s insert related functions,
- * when the hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_imp(const_reference r_val, true_type)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const_key_reference key = PB_DS_V2F(r_val);
- comp_hash pos_hash_pair = ranged_hash_fn_base::operator()(key);
- entry_pointer p_e = m_entries[pos_hash_pair.first];
- resize_base::notify_insert_search_start();
-
- while (p_e != NULL && !hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
- p_e->m_hash,
- key, pos_hash_pair.second))
- {
- resize_base::notify_insert_search_collision();
- p_e = p_e->m_p_next;
- }
-
- resize_base::notify_insert_search_end();
- if (p_e != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
- return std::make_pair(&p_e->m_value, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
- return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
deleted file mode 100644
index a7592b7f1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s iterators related functions, e.g.,
- * begin().
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::s_end_it;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::s_const_end_it;
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- pointer p_value;
- std::pair<entry_pointer, size_type> pos;
- get_start_it_state(p_value, pos);
- return iterator(p_value, pos, this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{ return s_end_it; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- pointer p_value;
- std::pair<entry_pointer, size_type> pos;
- get_start_it_state(p_value, pos);
- return const_iterator(p_value, pos, this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{ return s_const_end_it; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
deleted file mode 100644
index 9a661b361..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s policy access
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_hash_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_hash_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Eq_Fn&
-PB_DS_CLASS_C_DEC::
-get_eq_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Eq_Fn&
-PB_DS_CLASS_C_DEC::
-get_eq_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Comb_Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_comb_hash_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Comb_Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_comb_hash_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Resize_Policy&
-PB_DS_CLASS_C_DEC::
-get_resize_policy()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Resize_Policy&
-PB_DS_CLASS_C_DEC::
-get_resize_policy() const
-{ return *this; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
deleted file mode 100644
index 66333ec85..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_fn_imps.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s resize related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-do_resize_if_needed()
-{
- if (!resize_base::is_resize_needed())
- return false;
- resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-do_resize(size_type len)
-{ resize_imp(resize_base::get_nearest_larger_size(len)); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-do_resize_if_needed_no_throw()
-{
- if (!resize_base::is_resize_needed())
- return;
-
- __try
- {
- resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
- }
- __catch(...)
- { }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-resize_imp(size_type new_size)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (new_size == m_num_e)
- return;
-
- const size_type old_size = m_num_e;
- entry_pointer_array a_p_entries_resized;
-
- // Following line might throw an exception.
- ranged_hash_fn_base::notify_resized(new_size);
-
- __try
- {
- // Following line might throw an exception.
- a_p_entries_resized = s_entry_pointer_allocator.allocate(new_size);
- m_num_e = new_size;
- }
- __catch(...)
- {
- ranged_hash_fn_base::notify_resized(old_size);
- __throw_exception_again;
- }
-
- // At this point no exceptions can be thrown.
- resize_imp_no_exceptions(new_size, a_p_entries_resized, old_size);
- Resize_Policy::notify_resized(new_size);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-resize_imp_no_exceptions(size_type new_size, entry_pointer_array a_p_entries_resized, size_type old_size)
-{
- std::fill(a_p_entries_resized, a_p_entries_resized + m_num_e,
- entry_pointer(NULL));
-
- for (size_type pos = 0; pos < old_size; ++pos)
- {
- entry_pointer p_e = m_entries[pos];
- while (p_e != NULL)
- p_e = resize_imp_no_exceptions_reassign_pointer(p_e, a_p_entries_resized, traits_base::m_store_extra_indicator);
- }
-
- m_num_e = new_size;
- _GLIBCXX_DEBUG_ONLY(assert_entry_pointer_array_valid(a_p_entries_resized);)
- s_entry_pointer_allocator.deallocate(m_entries, old_size);
- m_entries = a_p_entries_resized;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-#include <ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp>
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 6577630f0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_no_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s resize related functions, when the
- * hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, false_type)
-{
- const size_type hash_pos =
- ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value));
-
- entry_pointer const p_next_e = p_e->m_p_next;
- p_e->m_p_next = a_p_entries_resized[hash_pos];
- a_p_entries_resized[hash_pos] = p_e;
- return p_next_e;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
deleted file mode 100644
index c1adb61b1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_store_hash_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s resize related functions, when the
- * hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-resize_imp_no_exceptions_reassign_pointer(entry_pointer p_e, entry_pointer_array a_p_entries_resized, true_type)
-{
- const comp_hash pos_hash_pair =
- ranged_hash_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash);
-
- entry_pointer const p_next_e = p_e->m_p_next;
- p_e->m_p_next = a_p_entries_resized[pos_hash_pair.first];
- a_p_entries_resized[pos_hash_pair.first] = p_e;
- return p_next_e;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
deleted file mode 100644
index 0d5ec85f2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/size_fn_imps.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file size_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s entire container size related
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{ return m_num_used_e; }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return (size() == 0); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_entry_allocator.max_size(); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
deleted file mode 100644
index b9c1ee20e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/standard_policies.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file standard_policies.hpp
- * Contains standard policies for cc_ht_map types.
- */
-
-#ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
-#define PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
-
-#include <ext/pb_ds/detail/standard_policies.hpp>
-
-#endif // #ifndef PB_DS_CC_HT_MAP_STANDARD_POLICIES_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
deleted file mode 100644
index 6fa5676b9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cc_hash_table_map_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s trace-mode functions.
- */
-
-#ifdef PB_DS_HT_MAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << static_cast<unsigned long>(m_num_e) << " "
- << static_cast<unsigned long>(m_num_used_e) << std::endl;
-
- for (size_type i = 0; i < m_num_e; ++i)
- {
- std::cerr << static_cast<unsigned long>(i) << " ";
- trace_list(m_entries[i]);
- std::cerr << std::endl;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_list(const_entry_pointer p_l) const
-{
- size_type iterated_num_used_e = 0;
- while (p_l != NULL)
- {
- std::cerr << PB_DS_V2F(p_l->m_value) << " ";
- p_l = p_l->m_p_next;
- }
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
deleted file mode 100644
index 1ee48a2ac..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/cond_dealtor.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_dealtor.hpp
- * Contains a conditional deallocator.
- */
-
-#ifndef PB_DS_COND_DEALTOR_HPP
-#define PB_DS_COND_DEALTOR_HPP
-
-namespace __gnu_pbds
-{
-
- namespace detail
- {
-
-#define PB_DS_COND_DEALTOR_CLASS_T_DEC \
- template<typename Entry, class Allocator>
-
-#define PB_DS_COND_DEALTOR_CLASS_C_DEC \
- cond_dealtor< \
- Entry, \
- Allocator>
-
- template<typename Entry, class Allocator>
- class cond_dealtor
- {
- public:
- typedef
- typename Allocator::template rebind<Entry>::other
- entry_allocator;
-
- typedef typename entry_allocator::pointer entry_pointer;
-
- public:
- inline
- cond_dealtor(entry_pointer p_e);
-
- inline
- ~cond_dealtor();
-
- inline void
- set_no_action();
-
- private:
- entry_pointer m_p_e;
-
- bool m_no_action_destructor;
-
- static entry_allocator s_alloc;
- };
-
- PB_DS_COND_DEALTOR_CLASS_T_DEC
- typename PB_DS_COND_DEALTOR_CLASS_C_DEC::entry_allocator
- PB_DS_COND_DEALTOR_CLASS_C_DEC::s_alloc;
-
- PB_DS_COND_DEALTOR_CLASS_T_DEC
- inline
- PB_DS_COND_DEALTOR_CLASS_C_DEC::
- cond_dealtor(entry_pointer p_e) :
- m_p_e(p_e),
- m_no_action_destructor(false)
- { }
-
- PB_DS_COND_DEALTOR_CLASS_T_DEC
- inline void
- PB_DS_COND_DEALTOR_CLASS_C_DEC::
- set_no_action()
- {
- m_no_action_destructor = true;
- }
-
- PB_DS_COND_DEALTOR_CLASS_T_DEC
- inline
- PB_DS_COND_DEALTOR_CLASS_C_DEC::
- ~cond_dealtor()
- {
- if (m_no_action_destructor)
- return;
-
- s_alloc.deallocate(m_p_e, 1);
- }
-
-#undef PB_DS_COND_DEALTOR_CLASS_T_DEC
-#undef PB_DS_COND_DEALTOR_CLASS_C_DEC
-
- } // namespace detail
-
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_COND_DEALTOR_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 20c998868..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains constructors_destructor_fn_imps applicable to different containers.
- */
-
-inline
-PB_DS_CLASS_NAME()
-{ }
-
-inline
-PB_DS_CLASS_NAME(const PB_DS_CLASS_NAME& other)
-: base_type((const base_type&)other)
-{ }
-
-template<typename T0>
-inline
-PB_DS_CLASS_NAME(T0 t0) : base_type(t0)
-{ }
-
-template<typename T0, typename T1>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1) : base_type(t0, t1)
-{ }
-
-template<typename T0, typename T1, typename T2>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2) : base_type(t0, t1, t2)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3)
-: base_type(t0, t1, t2, t3)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3, typename T4>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4)
-: base_type(t0, t1, t2, t3, t4)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3, typename T4,
- typename T5>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5)
-: base_type(t0, t1, t2, t3, t4, t5)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6)
-: base_type(t0, t1, t2, t3, t4, t5, t6)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7)
-: base_type(t0, t1, t2, t3, t4, t5, t6, t7)
-{ }
-
-template<typename T0, typename T1, typename T2, typename T3, typename T4,
- typename T5, typename T6, typename T7, typename T8>
-inline
-PB_DS_CLASS_NAME(T0 t0, T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8)
-: base_type(t0, t1, t2, t3, t4, t5, t6, t7, t8)
-{ }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
deleted file mode 100644
index 7f8d87a3c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/container_base_dispatch.hpp
+++ /dev/null
@@ -1,332 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file container_base_dispatch.hpp
- * Contains an associative container dispatching base.
- */
-
-#ifndef PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
-#define PB_DS_ASSOC_CNTNR_BASE_DS_DISPATCHER_HPP
-
-#include <ext/typelist.h>
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/list_update_map_/lu_map_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/splay_tree_/splay_tree_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/cc_hash_table_map_/cc_ht_map_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-#define PB_DS_DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
-#undef PB_DS_DATA_TRUE_INDICATOR
-
-#define PB_DS_DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/pat_trie_/pat_trie_.hpp>
-#undef PB_DS_DATA_FALSE_INDICATOR
-
-namespace __gnu_pbds
-{
-namespace detail
-{
- // Primary template.
- template<typename Key, typename Mapped, typename Data_Structure_Taq,
- typename Policy_Tl, typename Alloc>
- struct container_base_dispatch;
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, list_update_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef lu_map_data_<Key, Mapped, at0t, Alloc, at1t> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, list_update_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef lu_map_no_data_<Key, null_mapped_type, at0t, Alloc, at1t> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, pat_trie_tag, Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef pat_trie_data_<Key, Mapped, at1t, Alloc> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, pat_trie_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef pat_trie_no_data_<Key, null_mapped_type, at1t, Alloc> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, rb_tree_tag, Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef rb_tree_data_<Key, Mapped, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, rb_tree_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef rb_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, splay_tree_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef splay_tree_data_<Key, Mapped, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, splay_tree_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef splay_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, ov_tree_tag, Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef ov_tree_data_<Key, Mapped, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, ov_tree_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
-
- public:
- typedef ov_tree_no_data_<Key, null_mapped_type, at0t, at1t, Alloc> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, cc_hash_tag, Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2;
- typedef typename at2::type at2t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3;
- typedef typename at3::type at3t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4;
- typedef typename at4::type at4t;
-
- public:
- typedef cc_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value,
- at4t, at2t> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, cc_hash_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2;
- typedef typename at2::type at2t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3;
- typedef typename at3::type at3t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4;
- typedef typename at4::type at4t;
-
- public:
- typedef cc_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc,
- at3t::value, at4t, at2t> type;
- };
-
- template<typename Key, typename Mapped, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, Mapped, gp_hash_tag, Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2;
- typedef typename at2::type at2t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3;
- typedef typename at3::type at3t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4;
- typedef typename at4::type at4t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> at5;
- typedef typename at5::type at5t;
-
- public:
- typedef gp_ht_map_data_<Key, Mapped, at0t, at1t, Alloc, at3t::value,
- at4t, at5t, at2t> type;
- };
-
- template<typename Key, typename Policy_Tl, typename Alloc>
- struct container_base_dispatch<Key, null_mapped_type, gp_hash_tag,
- Policy_Tl, Alloc>
- {
- private:
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 0> at0;
- typedef typename at0::type at0t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 1> at1;
- typedef typename at1::type at1t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 2> at2;
- typedef typename at2::type at2t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 3> at3;
- typedef typename at3::type at3t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 4> at4;
- typedef typename at4::type at4t;
- typedef __gnu_cxx::typelist::at_index<Policy_Tl, 5> at5;
- typedef typename at5::type at5t;
-
- public:
- typedef gp_ht_map_no_data_<Key, null_mapped_type, at0t, at1t, Alloc,
- at3t::value, at4t, at5t, at2t> type;
- };
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
deleted file mode 100644
index 6f2defb64..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/debug_map_base.hpp
+++ /dev/null
@@ -1,360 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_map_base.hpp
- * Contains a debug-mode base for all maps.
- */
-
-#ifndef PB_DS_DEBUG_MAP_BASE_HPP
-#define PB_DS_DEBUG_MAP_BASE_HPP
-
-#ifdef _GLIBCXX_DEBUG
-
-#include <list>
-#include <utility>
-#include <cstdlib>
-#include <iostream>
-#include <ext/throw_allocator.h>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- // Need std::pair ostream extractor.
- template<typename _CharT, typename _Traits, typename _Tp1, typename _Tp2>
- inline std::basic_ostream<_CharT, _Traits>&
- operator<<(std::basic_ostream<_CharT, _Traits>& __out,
- const std::pair<_Tp1, _Tp2>& p)
- { return (__out << '(' << p.first << ',' << p.second << ')'); }
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, class Eq_Fn, typename Const_Key_Reference>
-
-#define PB_DS_CLASS_C_DEC \
- debug_map_base<Key, Eq_Fn, Const_Key_Reference>
-
- template<typename Key, class Eq_Fn, typename Const_Key_Reference>
- class debug_map_base
- {
- private:
- typedef typename std::allocator< Key> key_allocator;
-
- typedef typename key_allocator::size_type size_type;
-
- typedef Const_Key_Reference const_key_reference;
-
- protected:
- debug_map_base();
-
- debug_map_base(const PB_DS_CLASS_C_DEC& other);
-
- ~debug_map_base();
-
- inline void
- insert_new(const_key_reference r_key);
-
- inline void
- erase_existing(const_key_reference r_key);
-
- void
- clear();
-
- inline void
- check_key_exists(const_key_reference r_key) const;
-
- inline void
- check_key_does_not_exist(const_key_reference r_key) const;
-
- inline void
- check_size(size_type size) const;
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- template<typename Cmp_Fn>
- void
- split(const_key_reference, Cmp_Fn, PB_DS_CLASS_C_DEC&);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
- private:
- typedef std::list< Key> key_set;
- typedef typename key_set::iterator key_set_iterator;
- typedef typename key_set::const_iterator const_key_set_iterator;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
- const_key_set_iterator
- find(const_key_reference r_key) const;
-
- key_set_iterator
- find(const_key_reference r_key);
-
- key_set m_key_set;
- Eq_Fn m_eq;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- debug_map_base()
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- debug_map_base(const PB_DS_CLASS_C_DEC& other) : m_key_set(other.m_key_set)
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ~debug_map_base()
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- insert_new(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- __gnu_cxx::throw_allocator<char> alloc;
- const double orig_throw_prob = alloc.get_throw_prob();
- alloc.set_throw_prob(0);
- if (find(r_key) != m_key_set.end())
- {
- std::cerr << "insert_new" << r_key << std::endl;
- std::abort();
- }
-
- __try
- {
- m_key_set.push_back(r_key);
- }
- __catch(...)
- {
- std::cerr << "insert_new" << r_key << std::endl;
- std::abort();
- }
- alloc.set_throw_prob(orig_throw_prob);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- erase_existing(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- key_set_iterator it = find(r_key);
- if (it == m_key_set.end())
- {
- std::cerr << "erase_existing" << r_key << std::endl;
- std::abort();
- }
- m_key_set.erase(it);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- clear()
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- m_key_set.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- check_key_exists(const_key_reference r_key) const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (find(r_key) == m_key_set.end())
- {
- std::cerr << "check_key_exists" << r_key << std::endl;
- std::abort();
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- check_key_does_not_exist(const_key_reference r_key) const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (find(r_key) != m_key_set.end())
- {
- using std::cerr;
- using std::endl;
- cerr << "check_key_does_not_exist" << r_key << endl;
- std::abort();
- }
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- check_size(size_type size) const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const size_type key_set_size = m_key_set.size();
- if (size != key_set_size)
- {
- std::cerr << "check_size " << size
- << " " << key_set_size << std::endl;
- std::abort();
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- m_key_set.swap(other.m_key_set);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_key_set_iterator
- PB_DS_CLASS_C_DEC::
- find(const_key_reference r_key) const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- typedef const_key_set_iterator iterator_type;
- for (iterator_type it = m_key_set.begin(); it != m_key_set.end(); ++it)
- if (m_eq(*it, r_key))
- return it;
- return m_key_set.end();
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::key_set_iterator
- PB_DS_CLASS_C_DEC::
- find(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- key_set_iterator it = m_key_set.begin();
- while (it != m_key_set.end())
- {
- if (m_eq(*it, r_key))
- return it;
- ++it;
- }
- return it;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- assert_valid() const
- {
- const_key_set_iterator prime_it = m_key_set.begin();
- while (prime_it != m_key_set.end())
- {
- const_key_set_iterator sec_it = prime_it;
- ++sec_it;
- while (sec_it != m_key_set.end())
- {
- _GLIBCXX_DEBUG_ASSERT(!m_eq(*sec_it, *prime_it));
- _GLIBCXX_DEBUG_ASSERT(!m_eq(*prime_it, *sec_it));
- ++sec_it;
- }
- ++prime_it;
- }
- }
-#endif
-
- PB_DS_CLASS_T_DEC
- template<typename Cmp_Fn>
- void
- PB_DS_CLASS_C_DEC::
- split(const_key_reference r_key, Cmp_Fn cmp_fn, PB_DS_CLASS_C_DEC& other)
- {
- __gnu_cxx::throw_allocator<char> alloc;
- const double orig_throw_prob = alloc.get_throw_prob();
- alloc.set_throw_prob(0);
- other.clear();
- key_set_iterator it = m_key_set.begin();
- while (it != m_key_set.end())
- if (cmp_fn(r_key, * it))
- {
- other.insert_new(*it);
- it = m_key_set.erase(it);
- }
- else
- ++it;
- alloc.set_throw_prob(orig_throw_prob);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- join(PB_DS_CLASS_C_DEC& other)
- {
- __gnu_cxx::throw_allocator<char> alloc;
- const double orig_throw_prob = alloc.get_throw_prob();
- alloc.set_throw_prob(0);
- key_set_iterator it = other.m_key_set.begin();
- while (it != other.m_key_set.end())
- {
- insert_new(*it);
- it = other.m_key_set.erase(it);
- }
- _GLIBCXX_DEBUG_ASSERT(other.m_key_set.empty());
- alloc.set_throw_prob(orig_throw_prob);
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
deleted file mode 100644
index ec95bca64..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/eq_by_less.hpp
+++ /dev/null
@@ -1,68 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file eq_by_less.hpp
- * Contains an equivalence function.
- */
-
-#ifndef PB_DS_EQ_BY_LESS_HPP
-#define PB_DS_EQ_BY_LESS_HPP
-
-#include <utility>
-#include <functional>
-#include <vector>
-#include <assert.h>
-#include <ext/pb_ds/detail/types_traits.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, class Cmp_Fn>
- struct eq_by_less : private Cmp_Fn
- {
- bool
- operator()(const Key& r_lhs, const Key& r_rhs) const
- {
- const bool l = Cmp_Fn::operator()(r_lhs, r_rhs);
- const bool g = Cmp_Fn::operator()(r_rhs, r_lhs);
- return !(l || g);
- }
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_EQ_BY_LESS_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
deleted file mode 100644
index b21c252e2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp
+++ /dev/null
@@ -1,179 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_eq_fn.hpp
- * Contains 2 eqivalence functions, one employing a hash value,
- * and one ignoring it.
- */
-
-#ifndef PB_DS_HASH_EQ_FN_HPP
-#define PB_DS_HASH_EQ_FN_HPP
-
-#include <utility>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, class Eq_Fn, class Allocator, bool Store_Hash>
- struct hash_eq_fn;
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, class Eq_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- hash_eq_fn<Key, Eq_Fn, Allocator, false>
-
- /**
- * Specialization 1- The client requests that hash values not be stored.
- **/
- template<typename Key, class Eq_Fn, class Allocator>
- struct hash_eq_fn<Key, Eq_Fn, Allocator, false> : public Eq_Fn
- {
- typedef Eq_Fn eq_fn_base;
-
- typedef typename Allocator::template rebind<Key>::other key_allocator;
-
- typedef typename key_allocator::const_reference const_key_reference;
-
- hash_eq_fn();
-
- hash_eq_fn(const Eq_Fn& r_eq_fn);
-
- inline bool
- operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
-
- inline void
- swap(const PB_DS_CLASS_C_DEC& other);
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- hash_eq_fn()
- { }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- swap(const PB_DS_CLASS_C_DEC& other)
- { std::swap((Eq_Fn& )(*this), (Eq_Fn& )other); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- hash_eq_fn(const Eq_Fn& r_eq_fn) :
- Eq_Fn(r_eq_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- inline bool
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
- { return (eq_fn_base::operator()(r_lhs_key, r_rhs_key)); }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, class Eq_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- hash_eq_fn<Key, Eq_Fn, Allocator, true>
-
- /**
- * Specialization 2- The client requests that hash values be stored.
- **/
- template<typename Key, class Eq_Fn, class Allocator>
- struct hash_eq_fn<Key, Eq_Fn, Allocator, true> :
- public Eq_Fn
- {
- typedef typename Allocator::size_type size_type;
-
- typedef Eq_Fn eq_fn_base;
-
- typedef typename Allocator::template rebind<Key>::other key_allocator;
-
- typedef typename key_allocator::const_reference const_key_reference;
-
- hash_eq_fn();
-
- hash_eq_fn(const Eq_Fn& r_eq_fn);
-
- inline bool
- operator()(const_key_reference r_lhs_key, size_type lhs_hash,
- const_key_reference r_rhs_key, size_type rhs_hash) const;
-
- inline void
- swap(const PB_DS_CLASS_C_DEC& other);
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- hash_eq_fn()
- { }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- hash_eq_fn(const Eq_Fn& r_eq_fn) :
- Eq_Fn(r_eq_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- inline bool
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_lhs_key, size_type lhs_hash,
- const_key_reference r_rhs_key, size_type rhs_hash) const
- {
- _GLIBCXX_DEBUG_ASSERT(!eq_fn_base::operator()(r_lhs_key, r_rhs_key)
- || lhs_hash == rhs_hash);
-
- return (lhs_hash == rhs_hash &&
- eq_fn_base::operator()(r_lhs_key, r_rhs_key));
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- swap(const PB_DS_CLASS_C_DEC& other)
- { std::swap((Eq_Fn& )(*this), (Eq_Fn& )(other)); }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
deleted file mode 100644
index 4ac145d3d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,223 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::entry_allocator
-PB_DS_CLASS_C_DEC::s_entry_allocator;
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME()
-: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1)),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn)
-: ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn)
-: hash_eq_fn_base(r_eq_fn),
- ranged_probe_fn_base(resize_base::get_nearest_larger_size(1), r_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn,
- const Comb_Probe_Fn& r_comb_hash_fn)
-: hash_eq_fn_base(r_eq_fn),
- ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
- r_hash_fn, r_comb_hash_fn),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn,
- const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober)
-: hash_eq_fn_base(r_eq_fn),
- ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
- r_hash_fn, comb_hash_fn, prober),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Hash_Fn& r_hash_fn, const Eq_Fn& r_eq_fn,
- const Comb_Probe_Fn& comb_hash_fn, const Probe_Fn& prober,
- const Resize_Policy& r_resize_policy)
-: hash_eq_fn_base(r_eq_fn), resize_base(r_resize_policy),
- ranged_probe_fn_base(resize_base::get_nearest_larger_size(1),
- r_hash_fn, comb_hash_fn, prober),
- m_num_e(resize_base::get_nearest_larger_size(1)), m_num_used_e(0),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
- hash_eq_fn_base(other),
- resize_base(other),
- ranged_probe_fn_base(other),
- m_num_e(other.m_num_e),
- m_num_used_e(other.m_num_used_e),
- m_entries(s_entry_allocator.allocate(m_num_e))
-{
- for (size_type i = 0; i < m_num_e; ++i)
- m_entries[i].m_stat = (entry_status)empty_entry_status;
-
- __try
- {
- for (size_type i = 0; i < m_num_e; ++i)
- {
- m_entries[i].m_stat = other.m_entries[i].m_stat;
- if (m_entries[i].m_stat == valid_entry_status)
- new (m_entries + i) entry(other.m_entries[i]);
- }
- }
- __catch(...)
- {
- deallocate_all();
- __throw_exception_again;
- }
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_CLASS_NAME()
-{ deallocate_all(); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
- std::swap(m_num_e, other.m_num_e);
- std::swap(m_num_used_e, other.m_num_used_e);
- std::swap(m_entries, other.m_entries);
- ranged_probe_fn_base::swap(other);
- hash_eq_fn_base::swap(other);
- resize_base::swap(other);
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-deallocate_all()
-{
- clear();
- erase_all_valid_entries(m_entries, m_num_e);
- s_entry_allocator.deallocate(m_entries, m_num_e);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_all_valid_entries(entry_array a_entries_resized, size_type len)
-{
- for (size_type pos = 0; pos < len; ++pos)
- {
- entry_pointer p_e = &a_entries_resized[pos];
- if (p_e->m_stat == valid_entry_status)
- p_e->m_value.~value_type();
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{
- Resize_Policy::notify_resized(m_num_e);
- Resize_Policy::notify_cleared();
- ranged_probe_fn_base::notify_resized(m_num_e);
- for (size_type i = 0; i < m_num_e; ++i)
- m_entries[i].m_stat = empty_entry_status;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
deleted file mode 100644
index ec8069839..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-constructor_insert_new_imp(const_mapped_reference r_val, size_type pos,
- false_type)
-{
- _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status)k;
- entry* const p_e = m_entries + pos;
- new (&p_e->m_value) mapped_value_type(r_val);
- p_e->m_stat = valid_entry_status;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
deleted file mode 100644
index 5f3048759..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s constructors, destructor,
- * and related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-constructor_insert_new_imp(const_mapped_reference r_val, size_type pos,
- true_type)
-{
- _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
- entry* const p_e = m_entries + pos;
- new (&p_e->m_value) mapped_value_type(r_val);
- p_e->m_hash = ranged_probe_fn_base::operator()(PB_DS_V2F(r_val)).second;
- p_e->m_stat = valid_entry_status;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
deleted file mode 100644
index d7018c62c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- debug_base::check_size(m_num_used_e);
- assert_entry_array_valid(m_entries, traits_base::m_store_extra_indicator);
-}
-
-#include <ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp>
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 86b4d7daf..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_entry_array_valid(const entry_array a_entries, false_type) const
-{
- size_type iterated_num_used_e = 0;
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- const_entry_pointer p_e = &a_entries[pos];
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- case erased_entry_status:
- break;
- case valid_entry_status:
- {
- const_key_reference r_key = PB_DS_V2F(p_e->m_value);
- debug_base::check_key_exists(r_key);
- ++iterated_num_used_e;
- break;
- }
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- }
- _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
deleted file mode 100644
index 961f14361..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_entry_array_valid(const entry_array a_entries, true_type) const
-{
- size_type iterated_num_used_e = 0;
-
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- const_entry_pointer p_e =& a_entries[pos];
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- case erased_entry_status:
- break;
- case valid_entry_status:
- {
- const_key_reference r_key = PB_DS_V2F(p_e->m_value);
- debug_base::check_key_exists(r_key);
-
- const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
-
- _GLIBCXX_DEBUG_ASSERT(p_e->m_hash == pos_hash_pair.second);
- ++iterated_num_used_e;
- break;
- }
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- }
-
- _GLIBCXX_DEBUG_ASSERT(iterated_num_used_e == m_num_used_e);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
deleted file mode 100644
index 68878eb2a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s erase related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-erase_entry(entry_pointer p_e)
-{
- _GLIBCXX_DEBUG_ASSERT(p_e->m_stat = valid_entry_status);
- _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_e->m_value));)
- p_e->m_value.~value_type();
- p_e->m_stat = erased_entry_status;
- _GLIBCXX_DEBUG_ASSERT(m_num_used_e > 0);
- resize_base::notify_erased(--m_num_used_e);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- entry_pointer p_e = &m_entries[pos];
- if (p_e->m_stat == valid_entry_status)
- erase_entry(p_e);
- }
- do_resize_if_needed_no_throw();
- resize_base::notify_cleared();
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- size_type num_ersd = 0;
- for (size_type pos = 0; pos < m_num_e; ++pos)
- {
- entry_pointer p_e = &m_entries[pos];
- if (p_e->m_stat == valid_entry_status)
- if (pred(p_e->m_value))
- {
- ++num_ersd;
- erase_entry(p_e);
- }
- }
-
- do_resize_if_needed_no_throw();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{ return erase_imp(r_key, traits_base::m_store_extra_indicator); }
-
-#include <ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp>
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 40d578ebe..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s erase related functions,
- * when the hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase_imp(const_key_reference r_key, false_type)
-{
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- size_type hash = ranged_probe_fn_base::operator()(r_key);
- size_type i;
- resize_base::notify_erase_search_start();
-
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
- entry* const p_e = m_entries + pos;
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
- r_key));
- return false;
- }
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
- {
- resize_base::notify_erase_search_end();
- erase_entry(p_e);
- do_resize_if_needed_no_throw();
- return true;
- }
- break;
- case erased_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- resize_base::notify_erase_search_collision();
- }
- resize_base::notify_erase_search_end();
- return false;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
deleted file mode 100644
index 8155a5261..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s erase related functions,
- * when the hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase_imp(const_key_reference r_key, true_type)
-{
- const comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
- size_type i;
- resize_base::notify_erase_search_start();
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i);
-
- entry* const p_e = m_entries + pos;
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_erase_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(
- r_key));
- return false;
- }
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
- r_key, pos_hash_pair.second))
- {
- resize_base::notify_erase_search_end();
- erase_entry(p_e);
- do_resize_if_needed_no_throw();
- return true;
- }
- break;
- case erased_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
-
- resize_base::notify_erase_search_collision();
- }
- resize_base::notify_erase_search_end();
- return false;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
deleted file mode 100644
index 69d53763a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s find related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return find_key_pointer(r_key, traits_base::m_store_extra_indicator);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key) const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return const_cast<PB_DS_CLASS_C_DEC&>(*this).find_key_pointer(r_key, traits_base::m_store_extra_indicator);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find_end()
-{ return NULL; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find_end() const
-{ return NULL; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 298604c80..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s find related functions,
- * when the hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::pointer
-PB_DS_CLASS_C_DEC::
-find_key_pointer(const_key_reference r_key, false_type)
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
deleted file mode 100644
index a44b8326e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/find_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,40 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s insert related functions,
- * when the hash value is stored.
- */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
deleted file mode 100644
index 4741afec0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/gp_ht_map_.hpp
+++ /dev/null
@@ -1,677 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file gp_ht_map_.hpp
- * Contains an implementation class for gp_ht_map_.
- */
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/eq_fn/hash_eq_fn.hpp>
-#include <utility>
-#ifdef PB_DS_HT_MAP_TRACE_
-#include <iostream>
-#endif
-#ifdef _GLIBCXX_DEBUG
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#endif
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, typename Hash_Fn, typename Eq_Fn, \
- typename Allocator, bool Store_Hash, typename Comb_Probe_Fn, \
- typename Probe_Fn, typename Resize_Policy>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME gp_ht_map_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME gp_ht_map_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Hash_Fn, Eq_Fn, Allocator, \
- Store_Hash, Comb_Probe_Fn, Probe_Fn, Resize_Policy>
-
-#define PB_DS_HASH_EQ_FN_C_DEC \
- hash_eq_fn<Key, Eq_Fn, Allocator, Store_Hash>
-
-#define PB_DS_RANGED_PROBE_FN_C_DEC \
- ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, Store_Hash>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, Store_Hash>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, Eq_Fn, typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped()
-#endif
-
- template<typename Key,
- typename Mapped,
- typename Hash_Fn,
- typename Eq_Fn,
- typename Allocator,
- bool Store_Hash,
- typename Comb_Probe_Fn,
- typename Probe_Fn,
- typename Resize_Policy>
- class PB_DS_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- protected PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
- public PB_DS_HASH_EQ_FN_C_DEC,
- public Resize_Policy,
- public PB_DS_RANGED_PROBE_FN_C_DEC,
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
- typedef typename traits_base::value_type value_type_;
- typedef typename traits_base::pointer pointer_;
- typedef typename traits_base::const_pointer const_pointer_;
- typedef typename traits_base::reference reference_;
- typedef typename traits_base::const_reference const_reference_;
- typedef typename traits_base::comp_hash comp_hash;
-
- enum entry_status
- {
- empty_entry_status,
- valid_entry_status,
- erased_entry_status
- } __attribute__ ((packed));
-
- struct entry : public traits_base::stored_value_type
- {
- entry_status m_stat;
- };
-
- typedef typename Allocator::template rebind<entry>::other entry_allocator;
- typedef typename entry_allocator::pointer entry_pointer;
- typedef typename entry_allocator::const_pointer const_entry_pointer;
- typedef typename entry_allocator::reference entry_reference;
- typedef typename entry_allocator::const_reference const_entry_reference;
- typedef typename entry_allocator::pointer entry_array;
-
- typedef PB_DS_RANGED_PROBE_FN_C_DEC ranged_probe_fn_base;
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
- typedef PB_DS_HASH_EQ_FN_C_DEC hash_eq_fn_base;
- typedef Resize_Policy resize_base;
-
-#define PB_DS_GEN_POS typename Allocator::size_type
-
-#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
-
-#undef PB_DS_GEN_POS
-
- public:
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef Hash_Fn hash_fn;
- typedef Eq_Fn eq_fn;
- typedef Probe_Fn probe_fn;
- typedef Comb_Probe_Fn comb_probe_fn;
- typedef Resize_Policy resize_policy;
-
- enum
- {
- store_hash = Store_Hash
- };
-
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef point_iterator_ point_iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_point_iterator_ point_iterator;
-#endif
-
- typedef const_point_iterator_ const_point_iterator;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef iterator_ iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_iterator_ iterator;
-#endif
-
- typedef const_iterator_ const_iterator;
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&,
- const Probe_Fn&);
-
- PB_DS_CLASS_NAME(const Hash_Fn&, const Eq_Fn&, const Comb_Probe_Fn&,
- const Probe_Fn&, const Resize_Policy&);
-
- template<typename It>
- void
- copy_from_range(It first_it, It last_it);
-
- virtual
- ~PB_DS_CLASS_NAME();
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- inline bool
- empty() const;
-
- Hash_Fn&
- get_hash_fn();
-
- const Hash_Fn&
- get_hash_fn() const;
-
- Eq_Fn&
- get_eq_fn();
-
- const Eq_Fn&
- get_eq_fn() const;
-
- Probe_Fn&
- get_probe_fn();
-
- const Probe_Fn&
- get_probe_fn() const;
-
- Comb_Probe_Fn&
- get_comb_probe_fn();
-
- const Comb_Probe_Fn&
- get_comb_probe_fn() const;
-
- Resize_Policy&
- get_resize_policy();
-
- const Resize_Policy&
- get_resize_policy() const;
-
- inline std::pair<point_iterator, bool>
- insert(const_reference r_val)
- {
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return insert_imp(r_val, traits_base::m_store_extra_indicator);
- }
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- return subscript_imp(r_key, traits_base::m_store_extra_indicator);
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline point_iterator
- find(const_key_reference r_key);
-
- inline const_point_iterator
- find(const_key_reference r_key) const;
-
- inline point_iterator
- find_end();
-
- inline const_point_iterator
- find_end() const;
-
- inline bool
- erase(const_key_reference r_key);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred prd);
-
- void
- clear();
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_HT_MAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- friend class iterator_;
-#endif
-
- friend class const_iterator_;
-
- void
- deallocate_all();
-
- void
- initialize();
-
- void
- erase_all_valid_entries(entry_array, size_type);
-
- inline bool
- do_resize_if_needed();
-
- inline void
- do_resize_if_needed_no_throw();
-
- void
- resize_imp(size_type);
-
- virtual void
- do_resize(size_type);
-
- void
- resize_imp(entry_array, size_type);
-
- inline void
- resize_imp_reassign(entry_pointer, entry_array, false_type);
-
- inline void
- resize_imp_reassign(entry_pointer, entry_array, true_type);
-
- inline size_type
- find_ins_pos(const_key_reference, false_type);
-
- inline comp_hash
- find_ins_pos(const_key_reference, true_type);
-
- inline std::pair<point_iterator, bool>
- insert_imp(const_reference, false_type);
-
- inline std::pair<point_iterator, bool>
- insert_imp(const_reference, true_type);
-
- inline pointer
- insert_new_imp(const_reference r_val, size_type pos)
- {
- _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
-
- if (do_resize_if_needed())
- pos = find_ins_pos(PB_DS_V2F(r_val),
- traits_base::m_store_extra_indicator);
-
- _GLIBCXX_DEBUG_ASSERT(m_entries[pos].m_stat != valid_entry_status);
-
- entry* const p_e = m_entries + pos;
- new (&p_e->m_value) value_type(r_val);
- p_e->m_stat = valid_entry_status;
- resize_base::notify_inserted(++m_num_used_e);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));)
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return &p_e->m_value;
- }
-
- inline pointer
- insert_new_imp(const_reference r_val, comp_hash& r_pos_hash_pair)
- {
- _GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat !=
- valid_entry_status);
-
- if (do_resize_if_needed())
- r_pos_hash_pair = find_ins_pos(PB_DS_V2F(r_val),
- traits_base::m_store_extra_indicator);
-
- _GLIBCXX_DEBUG_ASSERT(m_entries[r_pos_hash_pair.first].m_stat !=
- valid_entry_status);
-
- entry* const p_e = m_entries + r_pos_hash_pair.first;
- new (&p_e->m_value) value_type(r_val);
- p_e->m_hash = r_pos_hash_pair.second;
- p_e->m_stat = valid_entry_status;
-
- resize_base::notify_inserted(++m_num_used_e);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(p_e->m_value));)
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return &p_e->m_value;
- }
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- inline mapped_reference
- subscript_imp(const_key_reference key, false_type)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- const size_type pos = find_ins_pos(key,
- traits_base::m_store_extra_indicator);
-
- entry_pointer p_e = &m_entries[pos];
- if (p_e->m_stat != valid_entry_status)
- return insert_new_imp(value_type(key, mapped_type()), pos)->second;
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
- return p_e->m_value.second;
- }
-
- inline mapped_reference
- subscript_imp(const_key_reference key, true_type)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- comp_hash pos_hash_pair =
- find_ins_pos(key, traits_base::m_store_extra_indicator);
-
- if (m_entries[pos_hash_pair.first].m_stat != valid_entry_status)
- return insert_new_imp(value_type(key, mapped_type()),
- pos_hash_pair)->second;
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key));
- return (m_entries + pos_hash_pair.first)->m_value.second;
- }
-#endif
-
- inline pointer
- find_key_pointer(const_key_reference key, false_type)
- {
- const size_type hash = ranged_probe_fn_base::operator()(key);
- size_type i;
- resize_base::notify_find_search_start();
-
- // Loop until entry is found or until all possible entries accessed.
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(key, hash, i);
-
- entry* const p_e = m_entries + pos;
- switch (p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_find_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
-
- return NULL;
- }
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), key))
- {
- resize_base::notify_find_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
-
- return pointer(&p_e->m_value);
- }
- break;
- case erased_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
-
- resize_base::notify_find_search_collision();
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
- resize_base::notify_find_search_end();
- return NULL;
- }
-
- inline pointer
- find_key_pointer(const_key_reference key, true_type)
- {
- comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(key);
- size_type i;
- resize_base::notify_find_search_start();
-
- // Loop until entry is found or until all possible entries accessed.
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos =
- ranged_probe_fn_base::operator()(key, pos_hash_pair.second, i);
-
- entry* const p_e = m_entries + pos;
-
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_find_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
-
- return NULL;
- }
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value),
- p_e->m_hash,
- key, pos_hash_pair.second))
- {
- resize_base::notify_find_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(key);)
- return pointer(&p_e->m_value);
- }
- break;
- case erased_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
-
- resize_base::notify_find_search_collision();
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(key);)
- resize_base::notify_find_search_end();
- return NULL;
- }
-
- inline bool
- erase_imp(const_key_reference, true_type);
-
- inline bool
- erase_imp(const_key_reference, false_type);
-
- inline void
- erase_entry(entry_pointer p_e);
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- void
- inc_it_state(pointer& r_p_value, size_type& r_pos) const
- { inc_it_state((const_mapped_pointer& )r_p_value, r_pos); }
-#endif
-
- void
- inc_it_state(const_pointer& r_p_value, size_type& r_pos) const
- {
- _GLIBCXX_DEBUG_ASSERT(r_p_value != NULL);
- for (++r_pos; r_pos < m_num_e; ++r_pos)
- {
- const_entry_pointer p_e =& m_entries[r_pos];
- if (p_e->m_stat == valid_entry_status)
- {
- r_p_value =& p_e->m_value;
- return;
- }
- }
- r_p_value = NULL;
- }
-
- void
- get_start_it_state(const_pointer& r_p_value, size_type& r_pos) const
- {
- for (r_pos = 0; r_pos < m_num_e; ++r_pos)
- {
- const_entry_pointer p_e = &m_entries[r_pos];
- if (p_e->m_stat == valid_entry_status)
- {
- r_p_value = &p_e->m_value;
- return;
- }
- }
- r_p_value = NULL;
- }
-
- void
- get_start_it_state(pointer& r_p_value, size_type& r_pos)
- {
- for (r_pos = 0; r_pos < m_num_e; ++r_pos)
- {
- entry_pointer p_e = &m_entries[r_pos];
- if (p_e->m_stat == valid_entry_status)
- {
- r_p_value = &p_e->m_value;
- return;
- }
- }
- r_p_value = NULL;
- }
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_entry_array_valid(const entry_array, false_type) const;
-
- void
- assert_entry_array_valid(const entry_array, true_type) const;
-#endif
-
- static entry_allocator s_entry_allocator;
- static iterator s_end_it;
- static const_iterator s_const_end_it;
-
- size_type m_num_e;
- size_type m_num_used_e;
- entry_pointer m_entries;
-
- enum
- {
- store_hash_ok = !Store_Hash
- || !is_same<Hash_Fn, __gnu_pbds::null_hash_fn>::value
- };
-
- PB_DS_STATIC_ASSERT(sth, store_hash_ok);
- };
-
-#include <ext/pb_ds/detail/gp_hash_table_map_/constructor_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_HASH_EQ_FN_C_DEC
-#undef PB_DS_RANGED_PROBE_FN_C_DEC
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_V2F
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
deleted file mode 100644
index 423a9288e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s entire container info related
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{ return m_num_used_e; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_entry_allocator.max_size(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return (size() == 0); }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
deleted file mode 100644
index 101ce8c6b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s insert related functions.
- */
-
-#include <ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp>
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 3227a4aaa..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s insert related functions,
- * when the hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-find_ins_pos(const_key_reference r_key, false_type)
-{
- size_type hash = ranged_probe_fn_base::operator()(r_key);
- size_type i;
-
- /* The insertion position is initted to a non-legal value to indicate
- * that it has not been initted yet.
- */
- size_type ins_pos = m_num_e;
- resize_base::notify_insert_search_start();
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
- _GLIBCXX_DEBUG_ASSERT(pos < m_num_e);
- entry* const p_e = m_entries + pos;
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_insert_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return (ins_pos == m_num_e) ? pos : ins_pos;
- }
- break;
- case erased_entry_status:
- if (ins_pos == m_num_e)
- ins_pos = pos;
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), r_key))
- {
- resize_base::notify_insert_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return pos;
- }
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
-
- resize_base::notify_insert_search_collision();
- }
- resize_base::notify_insert_search_end();
- if (ins_pos == m_num_e)
- __throw_insert_error();
- return ins_pos;
-}
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_imp(const_reference r_val, false_type)
-{
- const_key_reference r_key = PB_DS_V2F(r_val);
- const size_type pos = find_ins_pos(r_key,
- traits_base::m_store_extra_indicator);
-
- if (m_entries[pos].m_stat == valid_entry_status)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return std::make_pair(&(m_entries + pos)->m_value, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return std::make_pair(insert_new_imp(r_val, pos), true);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
deleted file mode 100644
index f4310b629..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/insert_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,118 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s find related functions,
- * when the hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::comp_hash
-PB_DS_CLASS_C_DEC::
-find_ins_pos(const_key_reference r_key, true_type)
-{
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- comp_hash pos_hash_pair = ranged_probe_fn_base::operator()(r_key);
-
- size_type i;
-
- /* The insertion position is initted to a non-legal value to indicate
- * that it has not been initted yet.
- */
- size_type ins_pos = m_num_e;
- resize_base::notify_insert_search_start();
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, pos_hash_pair.second, i);
-
- entry* const p_e = m_entries + pos;
- switch(p_e->m_stat)
- {
- case empty_entry_status:
- {
- resize_base::notify_insert_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
-
- return ((ins_pos == m_num_e) ?
- std::make_pair(pos, pos_hash_pair.second) :
- std::make_pair(ins_pos, pos_hash_pair.second));
- }
- break;
- case erased_entry_status:
- if (ins_pos == m_num_e)
- ins_pos = pos;
- break;
- case valid_entry_status:
- if (hash_eq_fn_base::operator()(PB_DS_V2F(p_e->m_value), p_e->m_hash,
- r_key, pos_hash_pair.second))
- {
- resize_base::notify_insert_search_end();
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return std::make_pair(pos, pos_hash_pair.second);
- }
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- resize_base::notify_insert_search_collision();
- }
- resize_base::notify_insert_search_end();
- if (ins_pos == m_num_e)
- __throw_insert_error();
- return std::make_pair(ins_pos, pos_hash_pair.second);
-}
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_imp(const_reference r_val, true_type)
-{
- const_key_reference r_key = PB_DS_V2F(r_val);
- comp_hash pos_hash_pair = find_ins_pos(r_key,
- traits_base::m_store_extra_indicator);
-
- _GLIBCXX_DEBUG_ASSERT(pos_hash_pair.first < m_num_e);
- entry_pointer p_e =& m_entries[pos_hash_pair.first];
- if (p_e->m_stat == valid_entry_status)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return std::make_pair(&p_e->m_value, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
deleted file mode 100644
index ff1f80f28..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/iterator_fn_imps.hpp
+++ /dev/null
@@ -1,83 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterator_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s iterators related functions, e.g.,
- * begin().
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::s_end_it;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::s_const_end_it;
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- pointer_ p_value;
- size_type pos;
- get_start_it_state(p_value, pos);
- return iterator(p_value, pos, this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{ return s_end_it; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- const_pointer_ p_value;
- size_type pos;
- get_start_it_state(p_value, pos);
- return const_iterator(p_value, pos, this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{ return s_const_end_it; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
deleted file mode 100644
index b1a3f7a7e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s policy agpess
- * functions.
- */
-
-PB_DS_CLASS_T_DEC
-Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_hash_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Hash_Fn&
-PB_DS_CLASS_C_DEC::
-get_hash_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Eq_Fn&
-PB_DS_CLASS_C_DEC::
-get_eq_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Eq_Fn&
-PB_DS_CLASS_C_DEC::
-get_eq_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Probe_Fn&
-PB_DS_CLASS_C_DEC::
-get_probe_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Probe_Fn&
-PB_DS_CLASS_C_DEC::
-get_probe_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Comb_Probe_Fn&
-PB_DS_CLASS_C_DEC::
-get_comb_probe_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Comb_Probe_Fn&
-PB_DS_CLASS_C_DEC::
-get_comb_probe_fn() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Resize_Policy&
-PB_DS_CLASS_C_DEC::
-get_resize_policy()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Resize_Policy&
-PB_DS_CLASS_C_DEC::
-get_resize_policy() const
-{ return *this; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
deleted file mode 100644
index 82a8ab0d2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_fn_imps.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s resize related functions.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-do_resize_if_needed()
-{
- if (!resize_base::is_resize_needed())
- return false;
- resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-do_resize(size_type n)
-{ resize_imp(resize_base::get_nearest_larger_size(n)); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-do_resize_if_needed_no_throw()
-{
- if (!resize_base::is_resize_needed())
- return;
-
- __try
- {
- resize_imp(resize_base::get_new_size(m_num_e, m_num_used_e));
- }
- __catch(...)
- { }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-resize_imp(size_type new_size)
-{
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_num_e);
-#endif
-
- if (new_size == m_num_e)
- return;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const size_type old_size = m_num_e;
- entry_array a_entries_resized = NULL;
-
- // Following line might throw an exception.
- a_entries_resized = s_entry_allocator.allocate(new_size);
-
- ranged_probe_fn_base::notify_resized(new_size);
- m_num_e = new_size;
-
- for (size_type i = 0; i < m_num_e; ++i)
- a_entries_resized[i].m_stat = empty_entry_status;
-
- __try
- {
- resize_imp(a_entries_resized, old_size);
- }
- __catch(...)
- {
- erase_all_valid_entries(a_entries_resized, new_size);
- m_num_e = old_size;
- s_entry_allocator.deallocate(a_entries_resized, new_size);
- ranged_probe_fn_base::notify_resized(old_size);
- __throw_exception_again;
- }
-
- // At this point no exceptions can be thrown.
- _GLIBCXX_DEBUG_ONLY(assert_entry_array_valid(a_entries_resized, traits_base::m_store_extra_indicator);)
-
- Resize_Policy::notify_resized(new_size);
- erase_all_valid_entries(m_entries, old_size);
- s_entry_allocator.deallocate(m_entries, old_size);
- m_entries = a_entries_resized;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-resize_imp(entry_array a_entries_resized, size_type old_size)
-{
- for (size_type pos = 0; pos < old_size; ++pos)
- if (m_entries[pos].m_stat == valid_entry_status)
- resize_imp_reassign(m_entries + pos, a_entries_resized,
- traits_base::m_store_extra_indicator);
-}
-
-#include <ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
-#include <ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp>
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
deleted file mode 100644
index 1d2839e0a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_no_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s resize related functions, when the
- * hash value is not stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized,
- false_type)
-{
- const_key_reference r_key = PB_DS_V2F(p_e->m_value);
- size_type hash = ranged_probe_fn_base::operator()(r_key);
- size_type i;
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
- entry_pointer p_new_e = a_entries_resized + pos;
- switch(p_new_e->m_stat)
- {
- case empty_entry_status:
- new (&p_new_e->m_value) value_type(p_e->m_value);
- p_new_e->m_stat = valid_entry_status;
- return;
- case erased_entry_status:
- _GLIBCXX_DEBUG_ASSERT(0);
- break;
- case valid_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- }
- __throw_insert_error();
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
deleted file mode 100644
index 765e9624b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file resize_store_hash_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s resize related functions, when the
- * hash value is stored.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-resize_imp_reassign(entry_pointer p_e, entry_array a_entries_resized,
- true_type)
-{
- const_key_reference r_key = PB_DS_V2F(p_e->m_value);
- size_type hash = ranged_probe_fn_base::operator()(r_key, p_e->m_hash);
-
- size_type i;
- for (i = 0; i < m_num_e; ++i)
- {
- const size_type pos = ranged_probe_fn_base::operator()(r_key, hash, i);
- entry_pointer p_new_e = a_entries_resized + pos;
- switch(p_new_e->m_stat)
- {
- case empty_entry_status:
- new (&p_new_e->m_value) value_type(p_e->m_value);
- p_new_e->m_hash = hash;
- p_new_e->m_stat = valid_entry_status;
- return;
- case erased_entry_status:
- _GLIBCXX_DEBUG_ASSERT(0);
- break;
- case valid_entry_status:
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
- }
- __throw_insert_error();
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
deleted file mode 100644
index 479725fd5..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/standard_policies.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file standard_policies.hpp
- * Contains standard policies for gp_ht_map types.
- */
-
-#ifndef PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP
-#define PB_DS_GP_HT_MAP_STANDARD_POLICIES_HPP
-
-#include <ext/pb_ds/detail/standard_policies.hpp>
-#include <ext/pb_ds/ht_load_check_resize_trigger.hpp>
-#include <ext/pb_ds/linear_probe_fn.hpp>
-#include <ext/pb_ds/quadratic_probe_fn.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Comb_Probe_Fn>
- struct default_probe_fn
- {
- private:
- typedef typename Comb_Probe_Fn::size_type size_type;
-
- public:
- typedef
- typename __conditional_type<
- is_same<
- __gnu_pbds::direct_mask_range_hashing<size_t>,
- Comb_Probe_Fn>::value,
- __gnu_pbds::linear_probe_fn<size_type>,
- __gnu_pbds::quadratic_probe_fn<size_type> >::__type
- type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
deleted file mode 100644
index c3fe13c00..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/gp_hash_table_map_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains implementations of gp_ht_map_'s trace-mode functions.
- */
-
-#ifdef PB_DS_HT_MAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << static_cast<unsigned long>(m_num_e) << " " <<
- static_cast<unsigned long>(m_num_used_e) << std::endl;
-
- for (size_type i = 0; i < m_num_e; ++i)
- {
- std::cerr << static_cast<unsigned long>(i) << " ";
-
- switch(m_entries[i].m_stat)
- {
- case empty_entry_status:
- std::cerr << "<empty>";
- break;
- case erased_entry_status:
- std::cerr << "<erased>";
- break;
- case valid_entry_status:
- std::cerr << PB_DS_V2F(m_entries[i].m_value);
- break;
- default:
- _GLIBCXX_DEBUG_ASSERT(0);
- };
-
- std::cerr << std::endl;
- }
-}
-
-#endif // #ifdef PB_DS_HT_MAP_TRACE_
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
deleted file mode 100644
index caf78482a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file direct_mask_range_hashing_imp.hpp
- * Contains a range-hashing policy implementation
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{ mask_based_base::swap(other); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_resized(size_type size)
-{ mask_based_base::notify_resized(size); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-operator()(size_type hash) const
-{ return mask_based_base::range_hash(hash); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
deleted file mode 100644
index 17d57b23d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file direct_mod_range_hashing_imp.hpp
- * Contains a range-hashing policy implementation
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{ mod_based_base::swap(other); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_resized(size_type n)
-{ mod_based_base::notify_resized(n); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-operator()(size_type hash) const
-{ return mod_based_base::range_hash(hash); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
deleted file mode 100644
index e7b264493..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file linear_probe_fn_imp.hpp
- * Contains a probe policy implementation
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{ }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-operator()(size_type i) const
-{
- return (i);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
deleted file mode 100644
index 936abbee1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file mask_based_range_hashing.hpp
- * Contains a range hashing policy base.
- */
-
-#ifndef PB_DS_MASK_BASED_RANGE_HASHING_HPP
-#define PB_DS_MASK_BASED_RANGE_HASHING_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC mask_based_range_hashing<Size_Type>
-
- template<typename Size_Type>
- class mask_based_range_hashing
- {
- protected:
- typedef Size_Type size_type;
-
- void
- swap(mask_based_range_hashing& other)
- { std::swap(m_mask, other.m_mask); }
-
- void
- notify_resized(size_type size);
-
- inline size_type
- range_hash(size_type hash) const
- { return size_type(hash & m_mask); }
-
- private:
- size_type m_mask;
- const static size_type s_num_bits_in_size_type;
- const static size_type s_highest_bit_1;
- };
-
- PB_DS_CLASS_T_DEC
- const typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::s_num_bits_in_size_type =
- sizeof(typename PB_DS_CLASS_C_DEC::size_type) << 3;
-
- PB_DS_CLASS_T_DEC
- const typename PB_DS_CLASS_C_DEC::size_type PB_DS_CLASS_C_DEC::s_highest_bit_1 = static_cast<typename PB_DS_CLASS_C_DEC::size_type>(1) << (s_num_bits_in_size_type - 1);
-
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- {
- size_type i = 0;
- while (size ^ s_highest_bit_1)
- {
- size <<= 1;
- ++i;
- }
-
- m_mask = 1;
- i += 2;
- while (i++ < s_num_bits_in_size_type)
- m_mask = (m_mask << 1) ^ 1;
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
deleted file mode 100644
index 2610e0457..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file mod_based_range_hashing.hpp
- * Contains a range hashing policy base.
- */
-
-#ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP
-#define PB_DS_MOD_BASED_RANGE_HASHING_HPP
-
-namespace __gnu_pbds
-{
-
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Size_Type>
-
-#define PB_DS_CLASS_C_DEC \
- mod_based_range_hashing< \
- Size_Type>
-
- template<typename Size_Type>
- class mod_based_range_hashing
- {
- protected:
- typedef Size_Type size_type;
-
- protected:
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- void
- notify_resized(size_type size);
-
- inline size_type
- range_hash(size_type hash) const;
-
- private:
- size_type m_size;
- };
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- std::swap(m_size, other.m_size);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- {
- m_size = size;
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- range_hash(size_type hash) const
- {
- return (hash % m_size);
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_MOD_BASED_RANGE_HASHING_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
deleted file mode 100644
index 970cfc1e5..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/probe_fn_base.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file probe_fn_base.hpp
- * Contains a probe policy base.
- */
-
-#ifndef PB_DS_PROBE_FN_BASE_HPP
-#define PB_DS_PROBE_FN_BASE_HPP
-
-#include <functional>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Allocator>
- class probe_fn_base
- {
- protected:
- ~probe_fn_base() { }
- };
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
deleted file mode 100644
index 4c7a6c465..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file quadratic_probe_fn_imp.hpp
- * Contains a probe policy implementation
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{ }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-operator()(size_type i) const
-{
- return (i* i);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
deleted file mode 100644
index 24899272f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_hash_fn.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file ranged_hash_fn.hpp
- * Contains a unified ranged hash functor, allowing the hash tables
- * to deal with a single class for ranged hashing.
- */
-
-#ifndef PB_DS_RANGED_HASH_FN_HPP
-#define PB_DS_RANGED_HASH_FN_HPP
-
-#include <ext/pb_ds/detail/basic_types.hpp>
-#include <utility>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Hash_Fn, bool Store_Hash>
- class ranged_hash_fn;
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Hash_Fn, typename Allocator, \
- typename Comb_Hash_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, false>
-
- /**
- * Specialization 1
- * The client supplies a hash function and a ranged hash function,
- * and requests that hash values not be stored.
- **/
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Hash_Fn>
- class ranged_hash_fn< Key, Hash_Fn, Allocator, Comb_Hash_Fn, false>
- : public Hash_Fn, public Comb_Hash_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef Hash_Fn hash_fn_base;
- typedef Comb_Hash_Fn comb_hash_fn_base;
- typedef typename Allocator::template rebind< Key>::other key_allocator;
- typedef typename key_allocator::const_reference const_key_reference;
-
- ranged_hash_fn(size_type);
-
- ranged_hash_fn(size_type, const Hash_Fn&);
-
- ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- void
- notify_resized(size_type);
-
- inline size_type
- operator()(const_key_reference) const;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn)
- : Hash_Fn(r_hash_fn)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Hash_Fn& r_comb_hash_fn)
- : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn)
- { comb_hash_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- comb_hash_fn_base::swap(other);
- std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- { comb_hash_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_key) const
- { return (comb_hash_fn_base::operator()(hash_fn_base::operator()(r_key)));}
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Hash_Fn, typename Allocator, \
- typename Comb_Hash_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_hash_fn<Key,Hash_Fn, Allocator, Comb_Hash_Fn, true>
-
- /**
- * Specialization 2
- * The client supplies a hash function and a ranged hash function,
- * and requests that hash values be stored.
- **/
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Hash_Fn>
- class ranged_hash_fn<Key, Hash_Fn, Allocator, Comb_Hash_Fn, true>
- : public Hash_Fn, public Comb_Hash_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef std::pair<size_type, size_type> comp_hash;
- typedef Hash_Fn hash_fn_base;
- typedef Comb_Hash_Fn comb_hash_fn_base;
- typedef typename Allocator::template rebind<Key>::other key_allocator;
- typedef typename key_allocator::const_reference const_key_reference;
-
- ranged_hash_fn(size_type);
-
- ranged_hash_fn(size_type, const Hash_Fn&);
-
- ranged_hash_fn(size_type, const Hash_Fn&, const Comb_Hash_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- void
- notify_resized(size_type);
-
- inline comp_hash
- operator()(const_key_reference) const;
-
- inline comp_hash
- operator()(const_key_reference, size_type) const;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn) :
- Hash_Fn(r_hash_fn)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Hash_Fn& r_comb_hash_fn)
- : Hash_Fn(r_hash_fn), Comb_Hash_Fn(r_comb_hash_fn)
- { comb_hash_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- comb_hash_fn_base::swap(other);
- std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- { comb_hash_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::comp_hash
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_key) const
- {
- const size_type hash = hash_fn_base::operator()(r_key);
- return std::make_pair(comb_hash_fn_base::operator()(hash), hash);
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::comp_hash
- PB_DS_CLASS_C_DEC::
- operator()
-#ifdef _GLIBCXX_DEBUG
- (const_key_reference r_key, size_type hash) const
-#else
- (const_key_reference /*r_key*/, size_type hash) const
-#endif
- {
- _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key));
- return std::make_pair(comb_hash_fn_base::operator()(hash), hash);
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Allocator, typename Comb_Hash_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false>
-
- /**
- * Specialization 3
- * The client does not supply a hash function (by specifying
- * null_hash_fn as the Hash_Fn parameter), and requests that hash
- * values not be stored.
- **/
- template<typename Key, typename Allocator, typename Comb_Hash_Fn>
- class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, false>
- : public null_hash_fn, public Comb_Hash_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef Comb_Hash_Fn comb_hash_fn_base;
-
- ranged_hash_fn(size_type);
-
- ranged_hash_fn(size_type, const Comb_Hash_Fn&);
-
- ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn) :
- Comb_Hash_Fn(r_comb_hash_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn,
- const Comb_Hash_Fn& r_comb_hash_fn)
- : Comb_Hash_Fn(r_comb_hash_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- { comb_hash_fn_base::swap(other); }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Allocator, typename Comb_Hash_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true>
-
- /**
- * Specialization 4
- * The client does not supply a hash function (by specifying
- * null_hash_fn as the Hash_Fn parameter), and requests that hash
- * values be stored.
- **/
- template<typename Key, typename Allocator, typename Comb_Hash_Fn>
- class ranged_hash_fn<Key, null_hash_fn, Allocator, Comb_Hash_Fn, true>
- : public null_hash_fn, public Comb_Hash_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef Comb_Hash_Fn comb_hash_fn_base;
-
- ranged_hash_fn(size_type);
-
- ranged_hash_fn(size_type, const Comb_Hash_Fn&);
-
- ranged_hash_fn(size_type, const null_hash_fn&, const Comb_Hash_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size)
- { Comb_Hash_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const Comb_Hash_Fn& r_comb_hash_fn)
- : Comb_Hash_Fn(r_comb_hash_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_hash_fn(size_type size, const null_hash_fn& r_null_hash_fn,
- const Comb_Hash_Fn& r_comb_hash_fn)
- : Comb_Hash_Fn(r_comb_hash_fn)
- { }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- { comb_hash_fn_base::swap(other); }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
deleted file mode 100644
index ddfba9de1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/ranged_probe_fn.hpp
+++ /dev/null
@@ -1,327 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file ranged_probe_fn.hpp
- * Contains a unified ranged probe functor, allowing the probe tables to deal with
- * a single class for ranged probeing.
- */
-
-#ifndef PB_DS_RANGED_PROBE_FN_HPP
-#define PB_DS_RANGED_PROBE_FN_HPP
-
-#include <ext/pb_ds/detail/basic_types.hpp>
-#include <utility>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Probe_Fn, typename Probe_Fn, bool Store_Hash>
- class ranged_probe_fn;
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Hash_Fn, typename Allocator, \
- typename Comb_Probe_Fn, typename Probe_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, false>
-
- /**
- * Specialization 1
- * The client supplies a probe function and a ranged probe
- * function, and requests that hash values not be stored.
- **/
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Probe_Fn, typename Probe_Fn>
- class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn,
- Probe_Fn, false>
- : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef Comb_Probe_Fn comb_probe_fn_base;
- typedef Hash_Fn hash_fn_base;
- typedef Probe_Fn probe_fn_base;
- typedef typename Allocator::template rebind<Key>::other key_allocator;
- typedef typename key_allocator::const_reference const_key_reference;
-
- ranged_probe_fn(size_type);
-
- ranged_probe_fn(size_type, const Hash_Fn&);
-
- ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&);
-
- ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&,
- const Probe_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- void
- notify_resized(size_type);
-
- inline size_type
- operator()(const_key_reference) const;
-
- inline size_type
- operator()(const_key_reference, size_type, size_type) const;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size)
- { Comb_Probe_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn)
- : Hash_Fn(r_hash_fn)
- { Comb_Probe_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Probe_Fn& r_comb_probe_fn)
- : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Probe_Fn& r_comb_probe_fn,
- const Probe_Fn& r_probe_fn)
- : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- comb_probe_fn_base::swap(other);
- std::swap((Hash_Fn& )(*this), (Hash_Fn&)other);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_key) const
- { return comb_probe_fn_base::operator()(hash_fn_base::operator()(r_key)); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference, size_type hash, size_type i) const
- {
- return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i));
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Hash_Fn, typename Allocator, \
- typename Comb_Probe_Fn, typename Probe_Fn>
-
-#define PB_DS_CLASS_C_DEC \
- ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn, Probe_Fn, true>
-
- /**
- * Specialization 2- The client supplies a probe function and a ranged
- * probe function, and requests that hash values not be stored.
- **/
- template<typename Key, typename Hash_Fn, typename Allocator,
- typename Comb_Probe_Fn, typename Probe_Fn>
- class ranged_probe_fn<Key, Hash_Fn, Allocator, Comb_Probe_Fn,
- Probe_Fn, true>
- : public Hash_Fn, public Comb_Probe_Fn, public Probe_Fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef std::pair<size_type, size_type> comp_hash;
- typedef Comb_Probe_Fn comb_probe_fn_base;
- typedef Hash_Fn hash_fn_base;
- typedef Probe_Fn probe_fn_base;
- typedef typename Allocator::template rebind<Key>::other key_allocator;
- typedef typename key_allocator::const_reference const_key_reference;
-
- ranged_probe_fn(size_type);
-
- ranged_probe_fn(size_type, const Hash_Fn&);
-
- ranged_probe_fn(size_type, const Hash_Fn&,
- const Comb_Probe_Fn&);
-
- ranged_probe_fn(size_type, const Hash_Fn&, const Comb_Probe_Fn&,
- const Probe_Fn&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- void
- notify_resized(size_type);
-
- inline comp_hash
- operator()(const_key_reference) const;
-
- inline size_type
- operator()(const_key_reference, size_type, size_type) const;
-
- inline size_type
- operator()(const_key_reference, size_type) const;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size)
- { Comb_Probe_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn)
- : Hash_Fn(r_hash_fn)
- { Comb_Probe_Fn::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Probe_Fn& r_comb_probe_fn)
- : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ranged_probe_fn(size_type size, const Hash_Fn& r_hash_fn,
- const Comb_Probe_Fn& r_comb_probe_fn,
- const Probe_Fn& r_probe_fn)
- : Hash_Fn(r_hash_fn), Comb_Probe_Fn(r_comb_probe_fn), Probe_Fn(r_probe_fn)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- comb_probe_fn_base::swap(other);
- std::swap((Hash_Fn& )(*this), (Hash_Fn& )other);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- notify_resized(size_type size)
- { comb_probe_fn_base::notify_resized(size); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::comp_hash
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference r_key) const
- {
- const size_type hash = hash_fn_base::operator()(r_key);
- return std::make_pair(comb_probe_fn_base::operator()(hash), hash);
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- operator()(const_key_reference, size_type hash, size_type i) const
- {
- return comb_probe_fn_base::operator()(hash + probe_fn_base::operator()(i));
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- operator()
-#ifdef _GLIBCXX_DEBUG
- (const_key_reference r_key, size_type hash) const
-#else
- (const_key_reference /*r_key*/, size_type hash) const
-#endif
- {
- _GLIBCXX_DEBUG_ASSERT(hash == hash_fn_base::operator()(r_key));
- return hash;
- }
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- /**
- * Specialization 3 and 4
- * The client does not supply a hash function or probe function,
- * and requests that hash values not be stored.
- **/
- template<typename Key, typename Allocator, typename Comb_Probe_Fn>
- class ranged_probe_fn<Key, null_hash_fn, Allocator, Comb_Probe_Fn,
- null_probe_fn, false>
- : public Comb_Probe_Fn, public null_hash_fn, public null_probe_fn
- {
- protected:
- typedef typename Allocator::size_type size_type;
- typedef Comb_Probe_Fn comb_probe_fn_base;
- typedef typename Allocator::template rebind<Key>::other key_allocator;
- typedef typename key_allocator::const_reference const_key_reference;
-
- ranged_probe_fn(size_type size)
- { Comb_Probe_Fn::notify_resized(size); }
-
- ranged_probe_fn(size_type, const Comb_Probe_Fn& r_comb_probe_fn)
- : Comb_Probe_Fn(r_comb_probe_fn)
- { }
-
- ranged_probe_fn(size_type, const null_hash_fn&,
- const Comb_Probe_Fn& r_comb_probe_fn,
- const null_probe_fn&)
- : Comb_Probe_Fn(r_comb_probe_fn)
- { }
-
- void
- swap(ranged_probe_fn& other)
- { comb_probe_fn_base::swap(other); }
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
deleted file mode 100644
index dad6451d0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_probe_fn.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_probe_fn.hpp
- * Contains a sample probe policy.
- */
-
-#ifndef PB_DS_SAMPLE_PROBE_FN_HPP
-#define PB_DS_SAMPLE_PROBE_FN_HPP
-
-// A sample probe policy.
-class sample_probe_fn
-{
-
-public:
-
- // Size type.
- typedef size_t size_type;
-
-public:
-
- // Default constructor.
- sample_probe_fn();
-
- // Copy constructor.
- sample_probe_fn(const sample_probe_fn& other);
-
- // Swaps content.
- inline void
- swap(sample_probe_fn& other);
-
-protected:
-
- // Returns the i-th offset from the hash value of some key r_key.
- inline size_type
- operator()(const_key_reference r_key, size_type i) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_PROBE_FN_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
deleted file mode 100644
index 0912e7f27..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_range_hashing.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_range_hashing.hpp
- * Contains a range hashing policy.
- */
-
-#ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP
-#define PB_DS_SAMPLE_RANGE_HASHING_HPP
-
-// A sample range-hashing functor.
-class sample_range_hashing
-{
-
-public:
-
- // Size type.
- typedef size_t size_type;
-
-public:
-
- // Default constructor.
- sample_range_hashing();
-
- // Copy constructor.
- sample_range_hashing(const sample_range_hashing& other);
-
- // Swaps content.
- inline void
- swap(sample_range_hashing& other);
-
-protected:
-
- // Notifies the policy object that the container's __size has changed to size.
- void
- notify_resized(size_type size);
-
- // Transforms the __hash value hash into a ranged-hash value.
- inline size_type
- operator()(size_type hash) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_RANGE_HASHING_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
deleted file mode 100644
index 6120231e2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_hash_fn.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_ranged_hash_fn.hpp
- * Contains a ranged hash policy.
- */
-
-#ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP
-#define PB_DS_SAMPLE_RANGED_HASH_FN_HPP
-
-// A sample ranged-hash functor.
-class sample_ranged_hash_fn
-{
-
-public:
-
- // Size type.
- typedef size_t size_type;
-
-public:
-
- // Default constructor.
- sample_ranged_hash_fn();
-
- // Copy constructor.
- sample_ranged_hash_fn(const sample_ranged_hash_fn& other);
-
- // Swaps content.
- inline void
- swap(sample_ranged_hash_fn& other);
-
-protected:
-
- // Notifies the policy object that the container's __size has changed to size.
- void
- notify_resized(size_type size);
-
- // Transforms r_key into a position within the table.
- inline size_type
- operator()(const_key_reference r_key) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_RANGED_HASH_FN_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
deleted file mode 100644
index 915f108df..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/hash_fn/sample_ranged_probe_fn.hpp
+++ /dev/null
@@ -1,77 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_ranged_probe_fn.hpp
- * Contains a ranged probe policy.
- */
-
-#ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
-#define PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
-
-// A sample ranged-probe functor.
-class sample_ranged_probe_fn
-{
-
-public:
-
- // Size type.
- typedef size_t size_type;
-
-public:
-
- // Default constructor.
- sample_ranged_probe_fn();
-
- // Copy constructor.
- sample_ranged_probe_fn(const sample_ranged_probe_fn& other);
-
- // Swaps content.
- inline void
- swap(sample_ranged_probe_fn& other);
-
-protected:
-
- // Notifies the policy object that the container's __size has changed to size.
- void
- notify_resized(size_type size);
-
- // Transforms the const key reference r_key into the i-th position within the table. This method is called for each collision within the probe sequence.
- inline size_type
- operator()(const_key_reference r_key, size_t hash, size_type i) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_RANGED_PROBE_FN_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
deleted file mode 100644
index 5955df161..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_iterator.hpp
- * Contains an iterator class returned by the table's const find and insert
- * methods.
- */
-
-#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP
-#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_ITERATOR_HPP
-
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_C_DEC \
- left_child_next_sibling_heap_const_iterator_<Node, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator>
-
- // Const point-type iterator.
- template<typename Node, class Allocator>
- class left_child_next_sibling_heap_const_iterator_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef typename PB_DS_BASE_C_DEC::node_pointer node_pointer;
-
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
-
- // Category.
- typedef std::forward_iterator_tag iterator_category;
-
- // Difference type.
- typedef typename Allocator::difference_type difference_type;
-
- // Iterator's value type.
- typedef typename base_type::value_type value_type;
-
- // Iterator's pointer type.
- typedef typename base_type::pointer pointer;
-
- // Iterator's const pointer type.
- typedef typename base_type::const_pointer const_pointer;
-
- // Iterator's reference type.
- typedef typename base_type::reference reference;
-
- // Iterator's const reference type.
- typedef typename base_type::const_reference const_reference;
-
- public:
-
- inline
- left_child_next_sibling_heap_const_iterator_(node_pointer p_nd) : base_type(p_nd)
- { }
-
- // Default constructor.
- inline
- left_child_next_sibling_heap_const_iterator_()
- { }
-
- // Copy constructor.
- inline
- left_child_next_sibling_heap_const_iterator_(const PB_DS_CLASS_C_DEC& other) : base_type(other)
- { }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const PB_DS_CLASS_C_DEC& other) const
- { return (base_type::m_p_nd == other.m_p_nd); }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const PB_DS_CLASS_C_DEC& other) const
- { return (base_type::m_p_nd != other.m_p_nd); }
-
- inline PB_DS_CLASS_C_DEC&
- operator++()
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd != NULL);
- inc();
- return (*this);
- }
-
- inline PB_DS_CLASS_C_DEC
- operator++(int)
- {
- PB_DS_CLASS_C_DEC ret_it(base_type::m_p_nd);
- operator++();
- return (ret_it);
- }
-
- private:
- void
- inc()
- {
- if (base_type::m_p_nd->m_p_next_sibling != NULL)
- {
- base_type::m_p_nd = base_type::m_p_nd->m_p_next_sibling;
- while (base_type::m_p_nd->m_p_l_child != NULL)
- base_type::m_p_nd = base_type::m_p_nd->m_p_l_child;
- return;
- }
-
- while (true)
- {
- node_pointer p_next = base_type::m_p_nd;
- base_type::m_p_nd = base_type::m_p_nd->m_p_prev_or_parent;
- if (base_type::m_p_nd == NULL || base_type::m_p_nd->m_p_l_child == p_next)
- return;
- }
- }
- };
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
deleted file mode 100644
index 7d682526b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_point_iterator.hpp
- * Contains an iterator class returned by the table's const find and insert
- * methods.
- */
-
-#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP
-#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_CONST_FIND_ITERATOR_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Node, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- left_child_next_sibling_heap_node_const_point_iterator_<Node, Allocator>
-
- // Const point-type iterator.
- template<typename Node, class Allocator>
- class left_child_next_sibling_heap_node_const_point_iterator_
- {
-
- protected:
- typedef typename Allocator::template rebind<Node>::other::pointer node_pointer;
-
- public:
-
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // Iterator's value type.
- typedef typename Node::value_type value_type;
-
- // Iterator's pointer type.
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- // Iterator's const pointer type.
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- // Iterator's reference type.
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- // Iterator's const reference type.
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- public:
-
- inline
- left_child_next_sibling_heap_node_const_point_iterator_(node_pointer p_nd) : m_p_nd(p_nd)
- { }
-
- // Default constructor.
- inline
- left_child_next_sibling_heap_node_const_point_iterator_() : m_p_nd(NULL)
- { }
-
- // Copy constructor.
- inline
- left_child_next_sibling_heap_node_const_point_iterator_(const PB_DS_CLASS_C_DEC& other) : m_p_nd(other.m_p_nd)
- { }
-
- // Access.
- inline const_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL);
- return &m_p_nd->m_value;
- }
-
- // Access.
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd != NULL);
- return m_p_nd->m_value;
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const PB_DS_CLASS_C_DEC& other) const
- { return m_p_nd == other.m_p_nd; }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const PB_DS_CLASS_C_DEC& other) const
- { return m_p_nd != other.m_p_nd; }
-
- public:
- node_pointer m_p_nd;
- };
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index ea0572527..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,152 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_allocator
-PB_DS_CLASS_C_DEC::s_node_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::no_throw_copies_t
-PB_DS_CLASS_C_DEC::s_no_throw_copies_ind;
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-left_child_next_sibling_heap_() :
- m_p_root(NULL),
- m_size(0)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn) :
- Cmp_Fn(r_cmp_fn),
- m_p_root(NULL),
- m_size(0)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other)
-: Cmp_Fn(other), m_p_root(NULL), m_size(0)
-{
- m_size = other.m_size;
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- m_p_root = recursive_copy_node(other.m_p_root);
- m_size = other.m_size;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- value_swap(other);
- std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_p_root, other.m_p_root);
- std::swap(m_size, other.m_size);
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~left_child_next_sibling_heap_()
-{
- clear();
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-recursive_copy_node(const_node_pointer p_nd)
-{
- if (p_nd == NULL)
- return (NULL);
-
- node_pointer p_ret = s_node_allocator.allocate(1);
-
- __try
- {
- new (p_ret) node(*p_nd);
- }
- __catch(...)
- {
- s_node_allocator.deallocate(p_ret, 1);
- __throw_exception_again;
- }
-
- p_ret->m_p_l_child = p_ret->m_p_next_sibling =
- p_ret->m_p_prev_or_parent = NULL;
-
- __try
- {
- p_ret->m_p_l_child = recursive_copy_node(p_nd->m_p_l_child);
- p_ret->m_p_next_sibling = recursive_copy_node(p_nd->m_p_next_sibling);
- }
- __catch(...)
- {
- clear_imp(p_ret);
- __throw_exception_again;
- }
-
- if (p_ret->m_p_l_child != NULL)
- p_ret->m_p_l_child->m_p_prev_or_parent = p_ret;
-
- if (p_ret->m_p_next_sibling != NULL)
- p_ret->m_p_next_sibling->m_p_prev_or_parent =
- p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd ? p_ret : NULL;
-
- return p_ret;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
deleted file mode 100644
index 86871ac38..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- _GLIBCXX_DEBUG_ASSERT(m_p_root == NULL || m_p_root->m_p_prev_or_parent == NULL);
-
- if (m_p_root != NULL)
- assert_node_consistent(m_p_root, Single_Link_Roots);
- assert_size();
- assert_iterators();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent(const_node_pointer p_nd, bool single_link) const
-{
- if (p_nd == NULL)
- return;
-
- assert_node_consistent(p_nd->m_p_l_child, false);
- assert_node_consistent(p_nd->m_p_next_sibling, single_link);
-
- if (single_link)
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent == NULL);
- else if (p_nd->m_p_next_sibling != NULL)
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling->m_p_prev_or_parent == p_nd);
-
- if (p_nd->m_p_l_child == NULL)
- return;
-
- const_node_pointer p_child = p_nd->m_p_l_child;
- while (p_child != NULL)
- {
- const_node_pointer p_next_child = p_child->m_p_next_sibling;
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(p_nd->m_value, p_child->m_value));
- p_child = p_next_child;
- }
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_p_prev_or_parent == p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_iterators() const
-{
- const size_type calc_size = std::distance(begin(), end());
- if (calc_size == size())
- return;
- _GLIBCXX_DEBUG_ASSERT(0);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_size() const
-{
- if (size_from_node(m_p_root) == m_size)
- return;
- _GLIBCXX_DEBUG_ASSERT(0);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size_under_node(const_node_pointer p_nd)
-{ return 1 + size_from_node(p_nd->m_p_l_child); }
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size_from_node(const_node_pointer p_nd)
-{
- size_type ret = 0;
- while (p_nd != NULL)
- {
- ret += 1 + size_from_node(p_nd->m_p_l_child);
- p_nd = p_nd->m_p_next_sibling;
- }
- return ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-degree(const_node_pointer p_nd)
-{
- size_type ret = 0;
- const_node_pointer p_child = p_nd->m_p_l_child;
- while (p_child != NULL)
- {
- ++ret;
- p_child = p_child->m_p_next_sibling;
- }
- return ret;
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
deleted file mode 100644
index 9fa09f49b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- clear_imp(m_p_root);
- _GLIBCXX_DEBUG_ASSERT(m_size == 0);
- m_p_root = NULL;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-actual_erase_node(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
- p_nd->~node();
- s_node_allocator.deallocate(p_nd, 1);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear_imp(node_pointer p_nd)
-{
- while (p_nd != NULL)
- {
- clear_imp(p_nd->m_p_l_child);
- node_pointer p_next = p_nd->m_p_next_sibling;
- actual_erase_node(p_nd);
- p_nd = p_next;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-to_linked_list()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- node_pointer p_cur = m_p_root;
- while (p_cur != NULL)
- if (p_cur->m_p_l_child != NULL)
- {
- node_pointer p_child_next = p_cur->m_p_l_child->m_p_next_sibling;
- p_cur->m_p_l_child->m_p_next_sibling = p_cur->m_p_next_sibling;
- p_cur->m_p_next_sibling = p_cur->m_p_l_child;
- p_cur->m_p_l_child = p_child_next;
- }
- else
- p_cur = p_cur->m_p_next_sibling;
-
-#ifdef _GLIBCXX_DEBUG
- const_node_pointer p_counter = m_p_root;
- size_type count = 0;
- while (p_counter != NULL)
- {
- ++count;
- _GLIBCXX_DEBUG_ASSERT(p_counter->m_p_l_child == NULL);
- p_counter = p_counter->m_p_next_sibling;
- }
- _GLIBCXX_DEBUG_ASSERT(count == m_size);
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-prune(Pred pred)
-{
- node_pointer p_cur = m_p_root;
- m_p_root = NULL;
- node_pointer p_out = NULL;
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
- if (pred(p_cur->m_value))
- {
- p_cur->m_p_next_sibling = p_out;
- if (p_out != NULL)
- p_out->m_p_prev_or_parent = p_cur;
- p_out = p_cur;
- }
- else
- {
- p_cur->m_p_next_sibling = m_p_root;
- if (m_p_root != NULL)
- m_p_root->m_p_prev_or_parent = p_cur;
- m_p_root = p_cur;
- }
- p_cur = p_next;
- }
- return p_out;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-bubble_to_top(node_pointer p_nd)
-{
- node_pointer p_parent = parent(p_nd);
- while (p_parent != NULL)
- {
- swap_with_parent(p_nd, p_parent);
- p_parent = parent(p_nd);
- }
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
deleted file mode 100644
index 75e6561c3..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{
- return (m_size == 0);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{
- return (m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{
- return (s_node_allocator.max_size());
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
deleted file mode 100644
index 926ccd39c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,175 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-get_new_node_for_insert(const_reference r_val)
-{
- return get_new_node_for_insert(r_val, s_no_throw_copies_ind);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-get_new_node_for_insert(const_reference r_val, false_type)
-{
- node_pointer p_new_nd = s_node_allocator.allocate(1);
-
- cond_dealtor_t cond(p_new_nd);
-
- new (const_cast<void* >(
- static_cast<const void* >(&p_new_nd->m_value)))
- typename node::value_type(r_val);
-
- cond.set_no_action();
-
- ++m_size;
-
- return (p_new_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-get_new_node_for_insert(const_reference r_val, true_type)
-{
- node_pointer p_new_nd = s_node_allocator.allocate(1);
-
- new (const_cast<void* >(
- static_cast<const void* >(&p_new_nd->m_value)))
- typename node::value_type(r_val);
-
- ++m_size;
-
- return (p_new_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-make_child_of(node_pointer p_nd, node_pointer p_new_parent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_new_parent != NULL);
-
- p_nd->m_p_next_sibling = p_new_parent->m_p_l_child;
-
- if (p_new_parent->m_p_l_child != NULL)
- p_new_parent->m_p_l_child->m_p_prev_or_parent = p_nd;
-
- p_nd->m_p_prev_or_parent = p_new_parent;
-
- p_new_parent->m_p_l_child = p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-parent(node_pointer p_nd)
-{
- while (true)
- {
- node_pointer p_pot = p_nd->m_p_prev_or_parent;
-
- if (p_pot == NULL || p_pot->m_p_l_child == p_nd)
- return p_pot;
-
- p_nd = p_pot;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap_with_parent(node_pointer p_nd, node_pointer p_parent)
-{
- if (p_parent == m_p_root)
- m_p_root = p_nd;
-
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_parent != NULL);
- _GLIBCXX_DEBUG_ASSERT(parent(p_nd) == p_parent);
-
- const bool nd_direct_child = p_parent->m_p_l_child == p_nd;
- const bool parent_root = p_parent->m_p_prev_or_parent == NULL;
- const bool parent_direct_child =
- !parent_root&& p_parent->m_p_prev_or_parent->m_p_l_child == p_parent;
-
- std::swap(p_parent->m_p_prev_or_parent, p_nd->m_p_prev_or_parent);
- std::swap(p_parent->m_p_next_sibling, p_nd->m_p_next_sibling);
- std::swap(p_parent->m_p_l_child, p_nd->m_p_l_child);
- std::swap(p_parent->m_metadata, p_nd->m_metadata);
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent != NULL);
-
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
-
- if (p_parent->m_p_next_sibling != NULL)
- p_parent->m_p_next_sibling->m_p_prev_or_parent = p_parent;
-
- if (p_parent->m_p_l_child != NULL)
- p_parent->m_p_l_child->m_p_prev_or_parent = p_parent;
-
- if (parent_direct_child)
- p_nd->m_p_prev_or_parent->m_p_l_child = p_nd;
- else if (!parent_root)
- p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd;
-
- if (!nd_direct_child)
- {
- p_nd->m_p_l_child->m_p_prev_or_parent = p_nd;
-
- p_parent->m_p_prev_or_parent->m_p_next_sibling = p_parent;
- }
- else
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child == p_nd);
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_prev_or_parent == p_parent);
-
- p_nd->m_p_l_child = p_parent;
- p_parent->m_p_prev_or_parent = p_nd;
- }
-
- _GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
deleted file mode 100644
index dca70fdd5..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- node_pointer p_nd = m_p_root;
-
- if (p_nd == NULL)
- return (iterator(NULL));
-
- while (p_nd->m_p_l_child != NULL)
- p_nd = p_nd->m_p_l_child;
-
- return (iterator(p_nd));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- node_pointer p_nd = m_p_root;
-
- if (p_nd == NULL)
- return (const_iterator(NULL));
-
- while (p_nd->m_p_l_child != NULL)
- p_nd = p_nd->m_p_l_child;
-
- return (const_iterator(p_nd));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{
- return (iterator(NULL));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{
- return (const_iterator(NULL));
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
deleted file mode 100644
index 34ad4bee0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp
+++ /dev/null
@@ -1,349 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file left_child_next_sibling_heap_.hpp
- * Contains an implementation class for a basic heap.
- */
-
-#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP
-#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_HPP
-
-/*
- * Based on CLRS.
- */
-
-#include <iterator>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_point_iterator.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/const_iterator.hpp>
-#ifdef PB_DS_LC_NS_HEAP_TRACE_
-#include <iostream>
-#endif
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_CLASS_T_DEC \
- template< \
- typename Value_Type, \
- class Cmp_Fn, \
- typename Node_Metadata, \
- class Allocator, \
- bool Single_Link_Roots>
-#else
-#define PB_DS_CLASS_T_DEC \
- template< \
- typename Value_Type, \
- class Cmp_Fn, \
- typename Node_Metadata, \
- class Allocator>
-#endif
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_CLASS_C_DEC \
- left_child_next_sibling_heap_< \
- Value_Type, \
- Cmp_Fn, \
- Node_Metadata, \
- Allocator, \
- Single_Link_Roots>
-#else
-#define PB_DS_CLASS_C_DEC \
- left_child_next_sibling_heap_< \
- Value_Type, \
- Cmp_Fn, \
- Node_Metadata, \
- Allocator>
-#endif
-
- /**
- * class description = "Base class for some types of h3ap$">
- **/
-#ifdef _GLIBCXX_DEBUG
- template<typename Value_Type,
- class Cmp_Fn,
- typename Node_Metadata,
- class Allocator,
- bool Single_Link_Roots>
-#else
- template<typename Value_Type,
- class Cmp_Fn,
- typename Node_Metadata,
- class Allocator>
-#endif
- class left_child_next_sibling_heap_ : public Cmp_Fn
- {
-
- protected:
- typedef
- typename Allocator::template rebind<
- left_child_next_sibling_heap_node_<
- Value_Type,
- Node_Metadata,
- Allocator> >::other
- node_allocator;
-
- typedef typename node_allocator::value_type node;
-
- typedef typename node_allocator::pointer node_pointer;
-
- typedef typename node_allocator::const_pointer const_node_pointer;
-
- typedef Node_Metadata node_metadata;
-
- typedef std::pair< node_pointer, node_pointer> node_pointer_pair;
-
- private:
- typedef cond_dealtor< node, Allocator> cond_dealtor_t;
-
- enum
- {
- simple_value = is_simple<Value_Type>::value
- };
-
- typedef integral_constant<int, simple_value> no_throw_copies_t;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- typedef
- left_child_next_sibling_heap_node_const_point_iterator_<
- node,
- Allocator>
- const_point_iterator;
-
- typedef const_point_iterator point_iterator;
-
- typedef
- left_child_next_sibling_heap_const_iterator_<
- node,
- Allocator>
- const_iterator;
-
- typedef const_iterator iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
- public:
-
- left_child_next_sibling_heap_();
-
- left_child_next_sibling_heap_(const Cmp_Fn& r_cmp_fn);
-
- left_child_next_sibling_heap_(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~left_child_next_sibling_heap_();
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- Cmp_Fn&
- get_cmp_fn();
-
- const Cmp_Fn&
- get_cmp_fn() const;
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
- void
- clear();
-
-#ifdef PB_DS_LC_NS_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- protected:
-
- inline node_pointer
- get_new_node_for_insert(const_reference r_val);
-
- inline static void
- make_child_of(node_pointer p_nd, node_pointer p_new_parent);
-
- void
- value_swap(PB_DS_CLASS_C_DEC& other);
-
- inline static node_pointer
- parent(node_pointer p_nd);
-
- inline void
- swap_with_parent(node_pointer p_nd, node_pointer p_parent);
-
- void
- bubble_to_top(node_pointer p_nd);
-
- inline void
- actual_erase_node(node_pointer p_nd);
-
- void
- clear_imp(node_pointer p_nd);
-
- void
- to_linked_list();
-
- template<typename Pred>
- node_pointer
- prune(Pred pred);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_node_consistent(const_node_pointer p_nd, bool single_link) const;
-
- static size_type
- size_under_node(const_node_pointer p_nd);
-
- static size_type
- degree(const_node_pointer p_nd);
-#endif
-
-#ifdef PB_DS_LC_NS_HEAP_TRACE_
- static void
- trace_node(const_node_pointer, size_type level);
-#endif
-
- protected:
- node_pointer m_p_root;
-
- size_type m_size;
-
- private:
-#ifdef _GLIBCXX_DEBUG
- void
- assert_iterators() const;
-
- void
- assert_size() const;
-
- static size_type
- size_from_node(const_node_pointer p_nd);
-#endif
-
- node_pointer
- recursive_copy_node(const_node_pointer p_nd);
-
- inline node_pointer
- get_new_node_for_insert(const_reference r_val, false_type);
-
- inline node_pointer
- get_new_node_for_insert(const_reference r_val, true_type);
-
-#ifdef PB_DS_LC_NS_HEAP_TRACE_
- template<typename Metadata_>
- static void
- trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>);
-
- static void
- trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>);
-#endif
-
- private:
- static node_allocator s_node_allocator;
-
- static no_throw_copies_t s_no_throw_copies_ind;
- };
-
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
deleted file mode 100644
index 1cdfe2883..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/node.hpp
+++ /dev/null
@@ -1,123 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node.hpp
- * Contains an implementation struct for this type of heap's node.
- */
-
-#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
-#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
-
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Value_Type, typename Metadata_Type, class Allocator>
- struct left_child_next_sibling_heap_node_
- {
- private:
- typedef
- left_child_next_sibling_heap_node_<
- Value_Type,
- Metadata_Type,
- Allocator>
- this_type;
-
- public:
- typedef typename Allocator::size_type size_type;
-
- typedef
- typename Allocator::template rebind<
- this_type>::other::pointer
- node_pointer;
-
- typedef Value_Type value_type;
-
- typedef Metadata_Type metadata_type;
-
- public:
- value_type m_value;
-
- metadata_type m_metadata;
-
- node_pointer m_p_l_child;
-
- node_pointer m_p_next_sibling;
-
- node_pointer m_p_prev_or_parent;
- };
-
- template<typename Value_Type, class Allocator>
- struct left_child_next_sibling_heap_node_<
- Value_Type,
- null_left_child_next_sibling_heap_node_metadata,
- Allocator>
- {
- private:
- typedef
- left_child_next_sibling_heap_node_<
- Value_Type,
- null_left_child_next_sibling_heap_node_metadata,
- Allocator>
- this_type;
-
- public:
- typedef typename Allocator::size_type size_type;
-
- typedef
- typename Allocator::template rebind<
- this_type>::other::pointer
- node_pointer;
-
- typedef Value_Type value_type;
-
- public:
- value_type m_value;
-
- node_pointer m_p_l_child;
-
- node_pointer m_p_next_sibling;
-
- node_pointer m_p_prev_or_parent;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NODE_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
deleted file mode 100644
index 040466e8e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file null_metadata.hpp
- * Contains an implementation struct for this type of heap's node.
- */
-
-#ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP
-#define PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- struct null_left_child_next_sibling_heap_node_metadata
- { };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_LEFT_CHILD_NEXT_SIBLING_HEAP_NULL_METADATA_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
deleted file mode 100644
index 350b4d08a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn() const
-{ return *this; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
deleted file mode 100644
index 2b90cfa1d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/left_child_next_sibling_heap_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-#ifdef PB_DS_LC_NS_HEAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << std::endl;
-
- trace_node(m_p_root, 0);
-
- std::cerr << std::endl;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_node(const_node_pointer p_nd, size_type level)
-{
- while (p_nd != NULL)
- {
- for (size_type i = 0; i < level; ++i)
- std::cerr << ' ';
-
- std::cerr << p_nd <<
- " prev = " << p_nd->m_p_prev_or_parent <<
- " next " << p_nd->m_p_next_sibling <<
- " left = " << p_nd->m_p_l_child << " ";
-
- trace_node_metadata(p_nd, type_to_type<node_metadata>());
-
- std::cerr << p_nd->m_value << std::endl;
-
- trace_node(p_nd->m_p_l_child, level + 1);
-
- p_nd = p_nd->m_p_next_sibling;
- }
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Metadata_>
-void
-PB_DS_CLASS_C_DEC::
-trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>)
-{
- std::cerr << "(" << p_nd->m_metadata << ") ";
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_node_metadata(const_node_pointer, type_to_type<null_left_child_next_sibling_heap_node_metadata>)
-{ }
-
-#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
deleted file mode 100644
index c998c3e67..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructor_destructor_fn_imps.hpp
- * Contains implementations of PB_DS_CLASS_NAME.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::entry_allocator
-PB_DS_CLASS_C_DEC::s_entry_allocator;
-
-PB_DS_CLASS_T_DEC
-Eq_Fn PB_DS_CLASS_C_DEC::s_eq_fn;
-
-PB_DS_CLASS_T_DEC
-null_lu_metadata PB_DS_CLASS_C_DEC::s_null_lu_metadata;
-
-PB_DS_CLASS_T_DEC
-Update_Policy PB_DS_CLASS_C_DEC::s_update_policy;
-
-PB_DS_CLASS_T_DEC
-type_to_type<
- typename PB_DS_CLASS_C_DEC::update_metadata> PB_DS_CLASS_C_DEC::s_metadata_type_indicator;
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME() : m_p_l(NULL)
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(It first_it, It last_it) : m_p_l(NULL)
-{
- copy_from_range(first_it, last_it);
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(),
-#endif
-m_p_l(NULL)
-{
- __try
- {
- for (const_iterator it = other.begin(); it != other.end(); ++it)
- {
- entry_pointer p_l = allocate_new_entry(*it,
- PB_DS_TYPES_TRAITS_C_DEC::m_no_throw_copies_indicator);
-
- p_l->m_p_next = m_p_l;
- m_p_l = p_l;
- }
- }
- __catch(...)
- {
- deallocate_all();
- __throw_exception_again;
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
- std::swap(m_p_l, other.m_p_l);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-deallocate_all()
-{
- entry_pointer p_l = m_p_l;
- while (p_l != NULL)
- {
- entry_pointer p_next_l = p_l->m_p_next;
- actual_erase_entry(p_l);
- p_l = p_next_l;
- }
- m_p_l = NULL;
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_CLASS_NAME()
-{ deallocate_all(); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
deleted file mode 100644
index 95e9e22b1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains implementations of cc_ht_map_'s debug-mode functions.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- size_type calc_size = 0;
- for (const_iterator it = begin(); it != end(); ++it)
- {
- debug_base::check_key_exists(PB_DS_V2F(*it));
- ++calc_size;
- }
- debug_base::check_size(calc_size);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
deleted file mode 100644
index 021ef50d8..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file entry_metadata_base.hpp
- * Contains an implementation for a list update map.
- */
-
-#ifndef PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP
-#define PB_DS_LU_MAP_ENTRY_METADATA_BASE_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Metadata>
- struct lu_map_entry_metadata_base
- {
- Metadata m_update_metadata;
- };
-
- template<>
- struct lu_map_entry_metadata_base<null_lu_metadata>
- { };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
deleted file mode 100644
index cdc59208f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- if (m_p_l == NULL)
- return false;
-
- if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value)))
- {
- entry_pointer p_next = m_p_l->m_p_next;
- actual_erase_entry(m_p_l);
- m_p_l = p_next;
- return true;
- }
-
- entry_pointer p_l = m_p_l;
- while (p_l->m_p_next != NULL)
- if (s_eq_fn(r_key, PB_DS_V2F(p_l->m_p_next->m_value)))
- {
- erase_next(p_l);
- return true;
- }
- else
- p_l = p_l->m_p_next;
- return false;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- deallocate_all();
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- size_type num_ersd = 0;
- while (m_p_l != NULL && pred(m_p_l->m_value))
- {
- entry_pointer p_next = m_p_l->m_p_next;
- ++num_ersd;
- actual_erase_entry(m_p_l);
- m_p_l = p_next;
- }
-
- if (m_p_l == NULL)
- return num_ersd;
-
- entry_pointer p_l = m_p_l;
- while (p_l->m_p_next != NULL)
- {
- if (pred(p_l->m_p_next->m_value))
- {
- ++num_ersd;
- erase_next(p_l);
- }
- else
- p_l = p_l->m_p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_next(entry_pointer p_l)
-{
- _GLIBCXX_DEBUG_ASSERT(p_l != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_l != m_p_l);
- _GLIBCXX_DEBUG_ASSERT(p_l->m_p_next != NULL);
- entry_pointer p_next_l = p_l->m_p_next->m_p_next;
- actual_erase_entry(p_l->m_p_next);
- p_l->m_p_next = p_next_l;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-actual_erase_entry(entry_pointer p_l)
-{
- _GLIBCXX_DEBUG_ONLY(debug_base::erase_existing(PB_DS_V2F(p_l->m_value));)
- p_l->~entry();
- s_entry_allocator.deallocate(p_l, 1);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
deleted file mode 100644
index 50347ac5f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-find_imp(const_key_reference r_key) const
-{
- if (m_p_l == NULL)
- return NULL;
- if (s_eq_fn(r_key, PB_DS_V2F(m_p_l->m_value)))
- {
- apply_update(m_p_l, s_metadata_type_indicator);
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key);)
- return m_p_l;
- }
-
- entry_pointer p_l = m_p_l;
- while (p_l->m_p_next != NULL)
- {
- entry_pointer p_next = p_l->m_p_next;
- if (s_eq_fn(r_key, PB_DS_V2F(p_next->m_value)))
- {
- if (apply_update(p_next, s_metadata_type_indicator))
- {
- p_l->m_p_next = p_next->m_p_next;
- p_next->m_p_next = m_p_l;
- m_p_l = p_next;
- return m_p_l;
- }
- return p_next;
- }
- else
- p_l = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return NULL;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Metadata>
-inline bool
-PB_DS_CLASS_C_DEC::
-apply_update(entry_pointer p_l, type_to_type<Metadata>)
-{ return s_update_policy(p_l->m_update_metadata); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-apply_update(entry_pointer, type_to_type<null_lu_metadata>)
-{ return s_update_policy(s_null_lu_metadata); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
deleted file mode 100644
index 5ad39709d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,57 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{ return std::distance(begin(), end()); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_entry_allocator.max_size(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return (m_p_l == NULL); }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
deleted file mode 100644
index 5efe2a13a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<
- typename PB_DS_CLASS_C_DEC::point_iterator,
- bool>
-PB_DS_CLASS_C_DEC::
-insert(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- entry_pointer p_l = find_imp(PB_DS_V2F(r_val));
-
- if (p_l != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val));)
- return std::make_pair(point_iterator(&p_l->m_value), false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val));)
-
- p_l = allocate_new_entry(r_val, traits_base::m_no_throw_copies_indicator);
- p_l->m_p_next = m_p_l;
- m_p_l = p_l;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return std::make_pair(point_iterator(&p_l->m_value), true);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-allocate_new_entry(const_reference r_val, false_type)
-{
- entry_pointer p_l = s_entry_allocator.allocate(1);
- cond_dealtor_t cond(p_l);
- new (const_cast<void* >(static_cast<const void* >(&p_l->m_value)))
- value_type(r_val);
-
- cond.set_no_action();
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
- init_entry_metadata(p_l, s_metadata_type_indicator);
- return p_l;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::entry_pointer
-PB_DS_CLASS_C_DEC::
-allocate_new_entry(const_reference r_val, true_type)
-{
- entry_pointer p_l = s_entry_allocator.allocate(1);
- new (&p_l->m_value) value_type(r_val);
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
- init_entry_metadata(p_l, s_metadata_type_indicator);
- return p_l;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Metadata>
-inline void
-PB_DS_CLASS_C_DEC::
-init_entry_metadata(entry_pointer p_l, type_to_type<Metadata>)
-{ new (&p_l->m_update_metadata) Metadata(s_update_policy()); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>)
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
deleted file mode 100644
index e3247c5b0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,80 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{
- if (m_p_l == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(empty());
- return end();
- }
- return iterator(&m_p_l->m_value, m_p_l, this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{
- if (m_p_l == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(empty());
- return end();
- }
- return iterator(&m_p_l->m_value, m_p_l, const_cast<PB_DS_CLASS_C_DEC* >(this));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{ return iterator(NULL, NULL, this); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{
- return const_iterator(NULL, NULL, const_cast<PB_DS_CLASS_C_DEC* const>(this));
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
deleted file mode 100644
index 0e9336b57..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/lu_map_.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file lu_map_.hpp
- * Contains a list update map.
- */
-
-#include <utility>
-#include <iterator>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/detail/list_update_map_/entry_metadata_base.hpp>
-#include <ext/pb_ds/exception.hpp>
-#ifdef _GLIBCXX_DEBUG
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#endif
-#ifdef PB_DS_LU_MAP_TRACE_
-#include <iostream>
-#endif
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, class Eq_Fn, \
- class Allocator, class Update_Policy>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME lu_map_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME lu_map_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Eq_Fn, Allocator, Update_Policy>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, false>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, Eq_Fn, \
- typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
- /* Skip to the lu, my darling. */
- // list-based (with updates) associative container.
- template<typename Key,
- typename Mapped,
- class Eq_Fn,
- class Allocator,
- class Update_Policy>
- class PB_DS_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- protected PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
-
- struct entry
- : public lu_map_entry_metadata_base<typename Update_Policy::metadata_type>
- {
- typename traits_base::value_type m_value;
- typename Allocator::template rebind<entry>::other::pointer m_p_next;
- };
-
- typedef typename Allocator::template rebind<entry>::other entry_allocator;
- typedef typename entry_allocator::pointer entry_pointer;
- typedef typename entry_allocator::const_pointer const_entry_pointer;
- typedef typename entry_allocator::reference entry_reference;
- typedef typename entry_allocator::const_reference const_entry_reference;
-
- typedef typename Allocator::template rebind<entry_pointer>::other entry_pointer_allocator;
- typedef typename entry_pointer_allocator::pointer entry_pointer_array;
-
- typedef typename traits_base::value_type value_type_;
- typedef typename traits_base::pointer pointer_;
- typedef typename traits_base::const_pointer const_pointer_;
- typedef typename traits_base::reference reference_;
- typedef typename traits_base::const_reference const_reference_;
-
-#define PB_DS_GEN_POS entry_pointer
-
-#include <ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/point_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/const_iterator.hpp>
-#include <ext/pb_ds/detail/unordered_iterator/iterator.hpp>
-
-#undef PB_DS_GEN_POS
-
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
- typedef cond_dealtor<entry, Allocator> cond_dealtor_t;
-
- public:
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef Eq_Fn eq_fn;
- typedef Update_Policy update_policy;
- typedef typename Update_Policy::metadata_type update_metadata;
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef point_iterator_ point_iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_point_iterator_ point_iterator;
-#endif
-
- typedef const_point_iterator_ const_point_iterator;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef iterator_ iterator;
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
- typedef const_iterator_ iterator;
-#endif
-
- typedef const_iterator_ const_iterator;
-
- public:
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- virtual
- ~PB_DS_CLASS_NAME();
-
- template<typename It>
- PB_DS_CLASS_NAME(It first_it, It last_it);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- inline bool
- empty() const;
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return insert(std::make_pair(r_key, mapped_type())).first->second;
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline std::pair<point_iterator, bool>
- insert(const_reference);
-
- inline point_iterator
- find(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- entry_pointer p_e = find_imp(r_key);
- return point_iterator(p_e == NULL ? NULL: &p_e->m_value);
- }
-
- inline const_point_iterator
- find(const_key_reference r_key) const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- entry_pointer p_e = find_imp(r_key);
- return const_point_iterator(p_e == NULL ? NULL: &p_e->m_value);
- }
-
- inline bool
- erase(const_key_reference);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- void
- clear();
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_LU_MAP_TRACE_
- void
- trace() const;
-#endif
-
- protected:
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- private:
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- friend class iterator_;
-#endif
-
- friend class const_iterator_;
-
- inline entry_pointer
- allocate_new_entry(const_reference, false_type);
-
- inline entry_pointer
- allocate_new_entry(const_reference, true_type);
-
- template<typename Metadata>
- inline static void
- init_entry_metadata(entry_pointer, type_to_type<Metadata>);
-
- inline static void
- init_entry_metadata(entry_pointer, type_to_type<null_lu_metadata>);
-
- void
- deallocate_all();
-
- void
- erase_next(entry_pointer);
-
- void
- actual_erase_entry(entry_pointer);
-
- void
- inc_it_state(const_pointer& r_p_value, entry_pointer& r_pos) const
- {
- r_pos = r_pos->m_p_next;
- r_p_value = (r_pos == NULL) ? NULL : &r_pos->m_value;
- }
-
- template<typename Metadata>
- inline static bool
- apply_update(entry_pointer, type_to_type<Metadata>);
-
- inline static bool
- apply_update(entry_pointer, type_to_type<null_lu_metadata>);
-
- inline entry_pointer
- find_imp(const_key_reference) const;
-
- static entry_allocator s_entry_allocator;
- static Eq_Fn s_eq_fn;
- static Update_Policy s_update_policy;
- static type_to_type<update_metadata> s_metadata_type_indicator;
- static null_lu_metadata s_null_lu_metadata;
-
- mutable entry_pointer m_p_l;
- };
-
-#include <ext/pb_ds/detail/list_update_map_/constructor_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
deleted file mode 100644
index 908aacc19..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_map_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains implementations of lu_map_.
- */
-
-#ifdef PB_DS_LU_MAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << m_p_l << std::endl << std::endl;
- const_entry_pointer p_l = m_p_l;
- while (p_l != NULL)
- {
- std::cerr << PB_DS_V2F(p_l->m_value) << std::endl;
- p_l = p_l->m_p_next;
- }
- std::cerr << std::endl;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
deleted file mode 100644
index 4ef7fe48a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file counter_lu_metadata.hpp
- * Contains implementation of a lu counter policy's metadata.
- */
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Size_Type>
- class counter_lu_policy_base;
-
- // A list-update metadata type that moves elements to the front of
- // the list based on the counter algorithm.
- template<typename Size_Type = size_t>
- class counter_lu_metadata
- {
- public:
- typedef Size_Type size_type;
-
- private:
- counter_lu_metadata(size_type init_count) : m_count(init_count)
- { }
-
- friend class counter_lu_policy_base<size_type>;
-
- mutable size_type m_count;
- };
-
- template<typename Size_Type>
- class counter_lu_policy_base
- {
- protected:
- typedef Size_Type size_type;
-
- counter_lu_metadata<size_type>
- operator()(size_type max_size) const
- { return counter_lu_metadata<Size_Type>(std::rand() % max_size); }
-
- template<typename Metadata_Reference>
- bool
- operator()(Metadata_Reference r_data, size_type m_max_count) const
- {
- if (++r_data.m_count != m_max_count)
- return false;
- r_data.m_count = 0;
- return true;
- }
- };
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
deleted file mode 100644
index f74a9fb54..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file counter_lu_policy_imp.hpp
- * Contains a lu counter policy implementation.
- */
-
-PB_DS_CLASS_T_DEC
-detail::counter_lu_metadata<typename Allocator::size_type>
-PB_DS_CLASS_C_DEC::
-operator()() const
-{ return (base_type::operator()(max_count)); }
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-operator()(metadata_reference r_data) const
-{ return (base_type::operator()(r_data, max_count)); }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
deleted file mode 100644
index 34426c538..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file mtf_lu_policy_imp.hpp
- * Contains a move-to-front policy implementation.
- */
-
-PB_DS_CLASS_T_DEC
-null_lu_metadata PB_DS_CLASS_C_DEC::s_metadata;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::metadata_type
-PB_DS_CLASS_C_DEC::
-operator()() const
-{ return s_metadata; }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-operator()(metadata_reference /*r_data*/) const
-{ return true; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
deleted file mode 100644
index c5da1e9d0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/list_update_policy/sample_update_policy.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_update_policy.hpp
- * Contains a sample policy for list update containers.
- */
-
-#ifndef PB_DS_SAMPLE_UPDATE_POLICY_HPP
-#define PB_DS_SAMPLE_UPDATE_POLICY_HPP
-
-// A sample list-update policy.
-struct sample_update_policy
-{
- // Default constructor.
- sample_update_policy();
-
- // Copy constructor.
- sample_update_policy(const sample_update_policy&);
-
- // Swaps content.
- inline void
- swap(sample_update_policy& other);
-
-protected:
- // Metadata on which this functor operates.
- typedef some_metadata_type metadata_type;
-
- // Creates a metadata object.
- metadata_type
- operator()() const;
-
- // Decides whether a metadata object should be moved to the front of
- // the list. A list-update based containers object will call this
- // method to decide whether to move a node to the front of the
- // list. The method shoule return true if the node should be moved
- // to the front of the list.
- bool
- operator()(metadata_reference) const;
-};
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
deleted file mode 100644
index e2c4b9ae9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_dtor.hpp
- * Contains a conditional destructor
- */
-
-template<typename Size_Type>
-class cond_dtor
-{
-public:
- cond_dtor(value_vector a_vec, iterator& r_last_it, Size_Type total_size)
- : m_a_vec(a_vec), m_r_last_it(r_last_it), m_max_size(total_size),
- m_no_action(false)
- { }
-
- ~cond_dtor()
- {
- if (m_no_action)
- return;
- iterator it = m_a_vec;
- while (it != m_r_last_it)
- {
- it->~value_type();
- ++it;
- }
-
- if (m_max_size > 0)
- value_allocator().deallocate(m_a_vec, m_max_size);
- }
-
- inline void
- set_no_action()
- { m_no_action = true; }
-
-protected:
- value_vector m_a_vec;
- iterator& m_r_last_it;
- const Size_Type m_max_size;
- bool m_no_action;
-};
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 545b98162..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,273 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::value_allocator
-PB_DS_CLASS_C_DEC::s_value_alloc;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::metadata_allocator
-PB_DS_CLASS_C_DEC::s_metadata_alloc;
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME() :
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
- cmp_fn_base(r_cmp_fn),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
- cmp_fn_base(r_cmp_fn),
- node_update(r_node_update),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{ _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
-#ifdef PB_DS_TREE_TRACE
- PB_DS_TREE_TRACE_BASE_C_DEC(other),
-#endif
- cmp_fn_base(other),
- node_update(other),
- m_a_values(NULL),
- m_a_metadata(NULL),
- m_end_it(NULL),
- m_size(0)
-{
- copy_from_ordered_range(other.begin(), other.end());
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-inline void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef
- std::map<
- key_type,
- mapped_type,
- Cmp_Fn,
- typename Allocator::template rebind<
- value_type>::other>
- map_type;
-#else
- typedef
- std::set<
- key_type,
- Cmp_Fn,
- typename Allocator::template rebind<
- Key>::other>
- map_type;
-#endif
-
- map_type m(first_it, last_it);
- copy_from_ordered_range(m.begin(), m.end());
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_ordered_range(It first_it, It last_it)
-{
- const size_type len = std::distance(first_it, last_it);
- if (len == 0)
- return;
-
- value_vector a_values = s_value_alloc.allocate(len);
- iterator target_it = a_values;
- It source_it = first_it;
- It source_end_it = last_it;
-
- cond_dtor<size_type> cd(a_values, target_it, len);
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
-
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, len);
- cd.set_no_action();
- m_a_values = a_values;
- m_size = len;
- m_end_it = m_a_values + m_size;
- update(PB_DS_node_begin_imp(), (node_update* )this);
-
-#ifdef _GLIBCXX_DEBUG
- const_iterator dbg_it = m_a_values;
- while (dbg_it != m_end_it)
- {
- debug_base::insert_new(PB_DS_V2F(*dbg_it));
- dbg_it++;
- }
- PB_DS_CLASS_C_DEC::assert_valid();
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_ordered_range(It first_it, It last_it, It other_first_it,
- It other_last_it)
-{
- clear();
- const size_type len = std::distance(first_it, last_it)
- + std::distance(other_first_it, other_last_it);
-
- value_vector a_values = s_value_alloc.allocate(len);
-
- iterator target_it = a_values;
- It source_it = first_it;
- It source_end_it = last_it;
-
- cond_dtor<size_type> cd(a_values, target_it, len);
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- source_it = other_first_it;
- source_end_it = other_last_it;
-
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, len);
- cd.set_no_action();
- m_a_values = a_values;
- m_size = len;
- m_end_it = m_a_values + m_size;
- update(PB_DS_node_begin_imp(), (node_update* )this);
-
-#ifdef _GLIBCXX_DEBUG
- const_iterator dbg_it = m_a_values;
- while (dbg_it != m_end_it)
- {
- debug_base::insert_new(PB_DS_V2F(*dbg_it));
- dbg_it++;
- }
- PB_DS_CLASS_C_DEC::assert_valid();
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- value_swap(other);
- std::swap((Cmp_Fn& )(*this), (Cmp_Fn& )other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_a_values, other.m_a_values);
- std::swap(m_a_metadata, other.m_a_metadata);
- std::swap(m_size, other.m_size);
- std::swap(m_end_it, other.m_end_it);
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_OV_TREE_CLASS_NAME()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
- reallocate_metadata((node_update* )this, 0);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update(node_iterator /*it*/, null_node_update_pointer)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update>
-void
-PB_DS_CLASS_C_DEC::
-update(node_iterator nd_it, Node_Update* p_update)
-{
- const_node_iterator end_it = PB_DS_node_end_imp();
- if (nd_it == end_it)
- return;
- update(nd_it.get_l_child(), p_update);
- update(nd_it.get_r_child(), p_update);
- node_update::operator()(nd_it, end_it);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
deleted file mode 100644
index c32a8af48..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,84 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- std::cout << "av1" << std::endl;
-
- if (m_a_values == NULL || m_end_it == NULL || m_size == 0)
- _GLIBCXX_DEBUG_ASSERT(m_a_values == NULL && m_end_it == NULL && m_size == 0);
-
- std::cout << "av2" << std::endl;
- assert_iterators();
- std::cout << "av3" << std::endl;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_iterators() const
-{
- debug_base::check_size(m_size);
- size_type iterated_num = 0;
- const_iterator prev_it = end();
- _GLIBCXX_DEBUG_ASSERT( m_end_it == m_a_values + m_size);
- for (const_iterator it = begin(); it != end(); ++it)
- {
- ++iterated_num;
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(*it));)
- _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it);
- const_iterator upper_bound_it = upper_bound(PB_DS_V2F(*it));
- --upper_bound_it;
- _GLIBCXX_DEBUG_ASSERT(upper_bound_it == it);
- if (prev_it != end())
- _GLIBCXX_DEBUG_ASSERT(Cmp_Fn::operator()(PB_DS_V2F(*prev_it),
- PB_DS_V2F(*it)));
- prev_it = it;
- }
- _GLIBCXX_DEBUG_ASSERT(iterated_num == m_size);
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
deleted file mode 100644
index 618306dce..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,193 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (m_size == 0)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return;
- }
- else
- {
- reallocate_metadata((node_update* )this, 0);
- cond_dtor<size_type> cd(m_a_values, m_end_it, m_size);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
- m_a_values = NULL;
- m_size = 0;
- m_end_it = m_a_values;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- size_type new_size = 0;
- size_type num_val_ersd = 0;
- iterator source_it = m_a_values;
- for (source_it = begin(); source_it != m_end_it; ++source_it)
- if (!pred(*source_it))
- ++new_size;
- else
- ++num_val_ersd;
-
- if (new_size == 0)
- {
- clear();
- return num_val_ersd;
- }
-
- value_vector a_new_values = s_value_alloc.allocate(new_size);
- iterator target_it = a_new_values;
- cond_dtor<size_type> cd(a_new_values, target_it, new_size);
- _GLIBCXX_DEBUG_ONLY(debug_base::clear());
- for (source_it = begin(); source_it != m_end_it; ++source_it)
- {
- if (!pred(*source_it))
- {
- new (const_cast<void*>(static_cast<const void* >(target_it)))
- value_type(*source_it);
-
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(*source_it)));
- ++target_it;
- }
- }
-
- reallocate_metadata((node_update* )this, new_size);
- cd.set_no_action();
-
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- m_a_values = a_new_values;
- m_size = new_size;
- m_end_it = target_it;
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return num_val_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-It
-PB_DS_CLASS_C_DEC::
-erase_imp(It it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (it == end())
- return end();
-
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::check_key_exists(PB_DS_V2F(*it));)
-
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- value_vector a_values = s_value_alloc.allocate(m_size - 1);
- iterator source_it = begin();
- iterator source_end_it = end();
- iterator target_it = a_values;
- iterator ret_it = end();
-
- cond_dtor<size_type> cd(a_values, target_it, m_size - 1);
-
- _GLIBCXX_DEBUG_ONLY(size_type cnt = 0;)
-
- while (source_it != source_end_it)
- {
- if (source_it != it)
- {
- _GLIBCXX_DEBUG_ONLY(++cnt;)
- _GLIBCXX_DEBUG_ASSERT(cnt != m_size);
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it);
-
- ++target_it;
- }
- else
- ret_it = target_it;
- ++source_it;
- }
-
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- reallocate_metadata((node_update* )this, m_size - 1);
- cd.set_no_action();
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::erase_existing(PB_DS_V2F(*it));)
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- m_a_values = a_values;
- --m_size;
- m_end_it = m_a_values + m_size;
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return It(ret_it);
-}
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- point_iterator it = find(r_key);
- if (it == end())
- return false;
- erase(it);
- return true;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
deleted file mode 100644
index c9421af39..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return m_size;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_value_alloc.max_size(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return size() == 0; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
deleted file mode 100644
index 91d277b0c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-reallocate_metadata(null_node_update_pointer, size_type)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-void
-PB_DS_CLASS_C_DEC::
-reallocate_metadata(Node_Update_* , size_type new_size)
-{
- metadata_pointer a_new_metadata_vec =(new_size == 0) ? NULL : s_metadata_alloc.allocate(new_size);
-
- if (m_a_metadata != NULL)
- {
- for (size_type i = 0; i < m_size; ++i)
- m_a_metadata[i].~metadata_type();
- s_metadata_alloc.deallocate(m_a_metadata, m_size);
- }
- std::swap(m_a_metadata, a_new_metadata_vec);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
deleted file mode 100644
index 7652c4c2e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin() const
-{ return PB_DS_node_begin_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_end() const
-{ return PB_DS_node_end_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin()
-{ return PB_DS_node_begin_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_end()
-{ return PB_DS_node_end_imp(); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_begin_imp() const
-{
- return const_node_iterator(const_cast<pointer>(mid_pointer(begin(), end())),
- const_cast<pointer>(begin()),
- const_cast<pointer>(end()),(m_a_metadata == NULL)?
- NULL :
- mid_pointer(m_a_metadata, m_a_metadata + m_size));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_end_imp() const
-{
- return const_node_iterator(end(), end(), end(),
- (m_a_metadata == NULL) ? NULL : m_a_metadata + m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_begin_imp()
-{
- return node_iterator(mid_pointer(begin(), end()), begin(), end(),
- (m_a_metadata == NULL) ? NULL : mid_pointer(m_a_metadata, m_a_metadata + m_size));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-PB_DS_node_end_imp()
-{
- return node_iterator(end(), end(),
- end(),(m_a_metadata == NULL) ? NULL : m_a_metadata + m_size);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
deleted file mode 100644
index 68fedc0eb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp
+++ /dev/null
@@ -1,292 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_iterators.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifndef PB_DS_OV_TREE_NODE_ITERATORS_HPP
-#define PB_DS_OV_TREE_NODE_ITERATORS_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC \
- ov_tree_node_const_it_<Value_Type, Metadata_Type, Allocator>
-
- // Const node reference.
- template<typename Value_Type, typename Metadata_Type, class Allocator>
- class ov_tree_node_const_it_
- {
-
- protected:
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- Metadata_Type>::other::const_pointer
- const_metadata_pointer;
-
- typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC this_type;
-
- protected:
-
- template<typename Ptr>
- inline static Ptr
- mid_pointer(Ptr p_begin, Ptr p_end)
- {
- _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
- return (p_begin + (p_end - p_begin) / 2);
- }
-
- public:
-
- typedef trivial_iterator_tag iterator_category;
-
- typedef trivial_iterator_difference_type difference_type;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::const_pointer
- value_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::const_pointer
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::const_pointer
- const_reference;
-
- typedef Metadata_Type metadata_type;
-
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- public:
- inline
- ov_tree_node_const_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : m_p_value(const_cast<pointer>(p_nd)), m_p_begin_value(const_cast<pointer>(p_begin_nd)), m_p_end_value(const_cast<pointer>(p_end_nd)), m_p_metadata(p_metadata)
- { }
-
- inline const_reference
- operator*() const
- { return m_p_value; }
-
- inline const_metadata_reference
- get_metadata() const
- {
- enum
- {
- has_metadata = !is_same<Metadata_Type, null_node_metadata>::value
- };
-
- PB_DS_STATIC_ASSERT(should_have_metadata, has_metadata);
- _GLIBCXX_DEBUG_ASSERT(m_p_metadata != NULL);
- return *m_p_metadata;
- }
-
- inline this_type
- get_l_child() const
- {
- if (m_p_begin_value == m_p_value)
- return (this_type(m_p_begin_value, m_p_begin_value, m_p_begin_value));
-
- const_metadata_pointer p_begin_metadata =
- m_p_metadata - (m_p_value - m_p_begin_value);
-
- return (this_type(mid_pointer(m_p_begin_value, m_p_value),
- m_p_begin_value,
- m_p_value,
- mid_pointer(p_begin_metadata, m_p_metadata)));
- }
-
- inline this_type
- get_r_child() const
- {
- if (m_p_value == m_p_end_value)
- return (this_type(m_p_end_value, m_p_end_value, m_p_end_value));
-
- const_metadata_pointer p_end_metadata =
- m_p_metadata + (m_p_end_value - m_p_value);
-
- return (this_type(mid_pointer(m_p_value + 1, m_p_end_value),
- m_p_value + 1,
- m_p_end_value,(m_p_metadata == NULL) ?
- NULL : mid_pointer(m_p_metadata + 1, p_end_metadata)));
- }
-
- inline bool
- operator==(const this_type& other) const
- {
- const bool is_end = m_p_begin_value == m_p_end_value;
- const bool is_other_end = other.m_p_begin_value == other.m_p_end_value;
-
- if (is_end)
- return (is_other_end);
-
- if (is_other_end)
- return (is_end);
-
- return m_p_value == other.m_p_value;
- }
-
- inline bool
- operator!=(const this_type& other) const
- { return !operator==(other); }
-
- public:
- pointer m_p_value;
- pointer m_p_begin_value;
- pointer m_p_end_value;
-
- const_metadata_pointer m_p_metadata;
- };
-
-#define PB_DS_OV_TREE_NODE_ITERATOR_C_DEC \
- ov_tree_node_it_<Value_Type, Metadata_Type, Allocator>
-
- // Node reference.
- template<typename Value_Type, typename Metadata_Type, class Allocator>
- class ov_tree_node_it_ : public PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
- {
-
- private:
- typedef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC this_type;
-
- typedef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC base_type;
-
- typedef typename base_type::pointer pointer;
-
- typedef typename base_type::const_pointer const_pointer;
-
- typedef
- typename base_type::const_metadata_pointer
- const_metadata_pointer;
-
- public:
-
- typedef trivial_iterator_tag iterator_category;
-
- typedef trivial_iterator_difference_type difference_type;
-
- typedef
- typename Allocator::template rebind<
- Value_Type>::other::pointer
- value_type;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::pointer
- reference;
-
- typedef
- typename Allocator::template rebind<
- typename remove_const<
- Value_Type>::type>::other::pointer
- const_reference;
-
- public:
- inline
- ov_tree_node_it_(const_pointer p_nd = NULL, const_pointer p_begin_nd = NULL, const_pointer p_end_nd = NULL, const_metadata_pointer p_metadata = NULL) : base_type(p_nd, p_begin_nd, p_end_nd, p_metadata)
- { }
-
- // Access.
- inline reference
- operator*() const
- { return reference(base_type::m_p_value); }
-
- // Returns the node reference associated with the left node.
- inline ov_tree_node_it_
- get_l_child() const
- {
- if (base_type::m_p_begin_value == base_type::m_p_value)
- return (this_type(base_type::m_p_begin_value, base_type::m_p_begin_value, base_type::m_p_begin_value));
-
- const_metadata_pointer p_begin_metadata =
- base_type::m_p_metadata - (base_type::m_p_value - base_type::m_p_begin_value);
-
- return (this_type(base_type::mid_pointer(base_type::m_p_begin_value, base_type::m_p_value),
- base_type::m_p_begin_value,
- base_type::m_p_value,
- base_type::mid_pointer(p_begin_metadata, base_type::m_p_metadata)));
- }
-
- // Returns the node reference associated with the right node.
- inline ov_tree_node_it_
- get_r_child() const
- {
- if (base_type::m_p_value == base_type::m_p_end_value)
- return (this_type(base_type::m_p_end_value, base_type::m_p_end_value, base_type::m_p_end_value));
-
- const_metadata_pointer p_end_metadata =
- base_type::m_p_metadata + (base_type::m_p_end_value - base_type::m_p_value);
-
- return (this_type(base_type::mid_pointer(base_type::m_p_value + 1, base_type::m_p_end_value),
- base_type::m_p_value + 1,
- base_type::m_p_end_value,(base_type::m_p_metadata == NULL)?
- NULL : base_type::mid_pointer(base_type::m_p_metadata + 1, p_end_metadata)));
- }
-
- };
-
-#undef PB_DS_OV_TREE_NODE_ITERATOR_C_DEC
-#undef PB_DS_OV_TREE_CONST_NODE_ITERATOR_C_DEC
-
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
deleted file mode 100644
index f331f0fb1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/ov_tree_map_.hpp
+++ /dev/null
@@ -1,522 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file ov_tree_map_.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#include <map>
-#include <set>
-#include <ext/pb_ds/tree_policy.hpp>
-#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/tree_trace_base.hpp>
-#include <utility>
-#include <functional>
-#include <algorithm>
-#include <vector>
-#include <assert.h>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, class Cmp_Fn, \
- class Node_And_It_Traits, class Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_OV_TREE_CLASS_NAME ov_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_OV_TREE_CLASS_NAME ov_tree_no_data_
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_data_
-#else
-#define PB_DS_CONST_NODE_ITERATOR_NAME ov_tree_const_node_iterator_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_OV_TREE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, false>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, eq_by_less<Key, Cmp_Fn>, \
- typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
-#ifdef PB_DS_TREE_TRACE
-#define PB_DS_TREE_TRACE_BASE_C_DEC \
- tree_trace_base<typename Node_And_It_Traits::const_node_iterator, \
- typename Node_And_It_Traits::node_iterator, \
- Cmp_Fn, false, Allocator>
-#endif
-
- // Ordered-vector tree associative-container.
- template<typename Key, typename Mapped, class Cmp_Fn,
- class Node_And_It_Traits, class Allocator>
- class PB_DS_OV_TREE_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- protected PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
-#ifdef PB_DS_TREE_TRACE
- public PB_DS_TREE_TRACE_BASE_C_DEC,
-#endif
- public Cmp_Fn,
- public Node_And_It_Traits::node_update,
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
-
- typedef typename remove_const<typename traits_base::value_type>::type non_const_value_type;
-
- typedef typename Allocator::template rebind<non_const_value_type>::other value_allocator;
- typedef typename value_allocator::pointer value_vector;
-
-
- typedef Cmp_Fn cmp_fn_base;
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
- typedef typename traits_base::pointer mapped_pointer_;
- typedef typename traits_base::const_pointer const_mapped_pointer_;
-
- typedef typename Node_And_It_Traits::metadata_type metadata_type;
-
- typedef typename Allocator::template rebind<metadata_type>::other metadata_allocator;
- typedef typename metadata_allocator::pointer metadata_pointer;
- typedef typename metadata_allocator::const_reference const_metadata_reference;
- typedef typename metadata_allocator::reference metadata_reference;
-
- typedef
- typename Node_And_It_Traits::null_node_update_pointer
- null_node_update_pointer;
-
- public:
-
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef typename Node_And_It_Traits::node_update node_update;
-
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
- typedef const_pointer const_point_iterator;
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- typedef pointer point_iterator;
-#else
- typedef const_point_iterator point_iterator;
-#endif
-
- typedef const_point_iterator const_iterator;
-
- typedef point_iterator iterator;
-
-#include <ext/pb_ds/detail/ov_tree_map_/cond_dtor.hpp>
-
- typedef
- typename Node_And_It_Traits::const_node_iterator
- const_node_iterator;
-
- typedef typename Node_And_It_Traits::node_iterator node_iterator;
-
- public:
-
- PB_DS_OV_TREE_CLASS_NAME();
-
- PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&);
-
- PB_DS_OV_TREE_CLASS_NAME(const Cmp_Fn&, const node_update&);
-
- PB_DS_OV_TREE_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- ~PB_DS_OV_TREE_CLASS_NAME();
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- inline size_type
- max_size() const;
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- Cmp_Fn&
- get_cmp_fn();
-
- const Cmp_Fn&
- get_cmp_fn() const;
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- point_iterator it = lower_bound(r_key);
- if (it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return it->second;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return (insert_new_val(it, std::make_pair(r_key, mapped_type()))->second);
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline std::pair<point_iterator, bool>
- insert(const_reference r_value)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- const_key_reference r_key = PB_DS_V2F(r_value);
- point_iterator it = lower_bound(r_key);
-
- if (it != end()&& !Cmp_Fn::operator()(r_key, PB_DS_V2F(*it)))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return std::make_pair(it, false);
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return std::make_pair(insert_new_val(it, r_value), true);
- }
-
- inline point_iterator
- lower_bound(const_key_reference r_key)
- {
- pointer it = m_a_values;
- pointer e_it = m_a_values + m_size;
- while (it != e_it)
- {
- pointer mid_it = it + ((e_it - it) >> 1);
- if (cmp_fn_base::operator()(PB_DS_V2F(*mid_it), r_key))
- it = ++mid_it;
- else
- e_it = mid_it;
- }
- return it;
- }
-
- inline const_point_iterator
- lower_bound(const_key_reference r_key) const
- { return const_cast<PB_DS_CLASS_C_DEC& >(*this).lower_bound(r_key); }
-
- inline point_iterator
- upper_bound(const_key_reference r_key)
- {
- iterator pot_it = lower_bound(r_key);
- if (pot_it != end()&& !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return ++pot_it;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return pot_it;
- }
-
- inline const_point_iterator
- upper_bound(const_key_reference r_key) const
- { return const_cast<PB_DS_CLASS_C_DEC&>(*this).upper_bound(r_key); }
-
- inline point_iterator
- find(const_key_reference r_key)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- iterator pot_it = lower_bound(r_key);
- if (pot_it != end() && !Cmp_Fn::operator()(r_key, PB_DS_V2F(*pot_it)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return pot_it;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return end();
- }
-
- inline const_point_iterator
- find(const_key_reference r_key) const
- { return (const_cast<PB_DS_CLASS_C_DEC& >(*this).find(r_key)); }
-
- bool
- erase(const_key_reference);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- inline iterator
- erase(iterator it)
- { return erase_imp<iterator>(it); }
-
- void
- clear();
-
- void
- join(PB_DS_CLASS_C_DEC&);
-
- void
- split(const_key_reference, PB_DS_CLASS_C_DEC&);
-
- inline iterator
- begin()
- { return m_a_values; }
-
- inline const_iterator
- begin() const
- { return m_a_values; }
-
- inline iterator
- end()
- { return m_end_it; }
-
- inline const_iterator
- end() const
- { return m_end_it; }
-
- inline const_node_iterator
- node_begin() const;
-
- inline const_node_iterator
- node_end() const;
-
- inline node_iterator
- node_begin();
-
- inline node_iterator
- node_end();
-
- private:
-
- inline void
- update(node_iterator /*it*/, null_node_update_pointer);
-
- template<typename Node_Update>
- void
- update(node_iterator, Node_Update*);
-
- void
- reallocate_metadata(null_node_update_pointer, size_type);
-
- template<typename Node_Update_>
- void
- reallocate_metadata(Node_Update_*, size_type);
-
- template<typename It>
- void
- copy_from_ordered_range(It, It);
-
- void
- value_swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_ordered_range(It, It, It, It);
-
- template<typename Ptr>
- inline static Ptr
- mid_pointer(Ptr p_begin, Ptr p_end)
- {
- _GLIBCXX_DEBUG_ASSERT(p_end >= p_begin);
- return (p_begin + (p_end - p_begin) / 2);
- }
-
- inline iterator
- insert_new_val(iterator it, const_reference r_value)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-#ifdef PB_DS_REGRESSION
- typename Allocator::group_throw_prob_adjustor adjust(m_size);
-#endif
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_value)));
-
- value_vector a_values = s_value_alloc.allocate(m_size + 1);
-
- iterator source_it = begin();
- iterator source_end_it = end();
- iterator target_it = a_values;
- iterator ret_it;
-
- cond_dtor<size_type> cd(a_values, target_it, m_size + 1);
- while (source_it != it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- new (const_cast<void* >(static_cast<const void* >(ret_it = target_it)))
- value_type(r_value);
- ++target_it;
-
- while (source_it != source_end_it)
- {
- new (const_cast<void* >(static_cast<const void* >(target_it)))
- value_type(*source_it++);
- ++target_it;
- }
-
- reallocate_metadata((node_update* )this, m_size + 1);
- cd.set_no_action();
- if (m_size != 0)
- {
- cond_dtor<size_type> cd1(m_a_values, m_end_it, m_size);
- }
-
- ++m_size;
- m_a_values = a_values;
- m_end_it = m_a_values + m_size;
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_value)));
- update(node_begin(), (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return ret_it;
- }
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_iterators() const;
-#endif
-
- template<typename It>
- It
- erase_imp(It it);
-
- inline const_node_iterator
- PB_DS_node_begin_imp() const;
-
- inline const_node_iterator
- PB_DS_node_end_imp() const;
-
- inline node_iterator
- PB_DS_node_begin_imp();
-
- inline node_iterator
- PB_DS_node_end_imp();
-
- private:
- static value_allocator s_value_alloc;
- static metadata_allocator s_metadata_alloc;
-
- value_vector m_a_values;
- metadata_pointer m_a_metadata;
- iterator m_end_it;
- size_type m_size;
- };
-
-#include <ext/pb_ds/detail/ov_tree_map_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/bin_search_tree_/policy_access_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_OV_TREE_CLASS_NAME
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#ifdef PB_DS_TREE_TRACE
-#undef PB_DS_TREE_TRACE_BASE_C_DEC
-#endif
-
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-#undef PB_DS_CONST_NODE_ITERATOR_NAME
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
deleted file mode 100644
index c06d6f851..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Cmp_Fn&
-PB_DS_CLASS_C_DEC::
-get_cmp_fn() const
-{ return *this; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
deleted file mode 100644
index 76bb6fafd..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- if (m_size == 0)
- {
- other.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (Cmp_Fn::operator()(r_key, PB_DS_V2F(*begin())))
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(*(end() - 1))))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- if (m_size == 1)
- {
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- iterator it = upper_bound(r_key);
- PB_DS_CLASS_C_DEC new_other(other, other);
- new_other.copy_from_ordered_range(it, end());
- PB_DS_CLASS_C_DEC new_this(*this, * this);
- new_this.copy_from_ordered_range(begin(), it);
-
- // No exceptions from this point.
- _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(Cmp_Fn& )(*this), other);)
- other.update(other.node_begin(), (node_update* )(&other));
- update(node_begin(), (node_update* )this);
- other.value_swap(new_other);
- value_swap(new_this);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (other.m_size == 0)
- return;
-
- if (m_size == 0)
- {
- value_swap(other);
- return;
- }
-
- const bool greater = Cmp_Fn::operator()(PB_DS_V2F(*(end() - 1)),
- PB_DS_V2F(*other.begin()));
-
- const bool lesser = Cmp_Fn::operator()(PB_DS_V2F(*(other.end() - 1)),
- PB_DS_V2F(*begin()));
-
- if (!greater && !lesser)
- __throw_join_error();
-
- PB_DS_CLASS_C_DEC new_this(*this, *this);
-
- if (greater)
- new_this.copy_from_ordered_range(begin(), end(),
- other.begin(), other.end());
- else
- new_this.copy_from_ordered_range(other.begin(), other.end(),
- begin(), end());
-
- // No exceptions from this point.
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- value_swap(new_this);
- other.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
deleted file mode 100644
index 63cb0f7fb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/ov_tree_map_/traits.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation class for ov_tree_.
- */
-
-#ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/ov_tree_map_/node_iterators.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Key,
- typename Mapped,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- ov_tree_tag,
- Allocator>
- {
- private:
- typedef
- typename types_traits<
- Key,
- Mapped,
- Allocator,
- false>::value_type
- value_type;
-
- public:
- typedef
- typename tree_node_metadata_selector<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef
- ov_tree_node_const_it_<
- value_type,
- metadata_type,
- Allocator>
- const_node_iterator;
-
- typedef
- ov_tree_node_it_<
- value_type,
- metadata_type,
- Allocator>
- node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- template<typename Key,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- ov_tree_tag,
- Allocator>
- {
- private:
- typedef
- typename types_traits<
- Key,
- null_mapped_type,
- Allocator,
- false>::value_type
- value_type;
-
- public:
- typedef
- typename tree_node_metadata_selector<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef
- ov_tree_node_const_it_<
- value_type,
- metadata_type,
- Allocator>
- const_node_iterator;
-
- typedef const_node_iterator node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- const_node_iterator,
- Cmp_Fn,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_tree_node_update<
- const_node_iterator,
- node_iterator,
- Cmp_Fn,
- Allocator>*
- null_node_update_pointer;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_OV_TREE_NODE_AND_IT_TRAITS_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index e292ed5d9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- push(*(first_it++));
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-pairing_heap_()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-pairing_heap_(const Cmp_Fn& r_cmp_fn) :
- PB_DS_BASE_C_DEC(r_cmp_fn)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-pairing_heap_(const PB_DS_CLASS_C_DEC& other) :
- PB_DS_BASE_C_DEC(other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- PB_DS_BASE_C_DEC::swap(other);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~pairing_heap_()
-{ }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
deleted file mode 100644
index 7c9fc1345..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_root == NULL
- || base_type::m_p_root->m_p_next_sibling == NULL);
- base_type::assert_valid();
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
deleted file mode 100644
index 905be1098..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-pop()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- node_pointer p_new_root = join_node_children(base_type::m_p_root);
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_new_root, false);)
- if (p_new_root != NULL)
- p_new_root->m_p_prev_or_parent = NULL;
-
- base_type::actual_erase_node(base_type::m_p_root);
- base_type::m_p_root = p_new_root;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase(point_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
- remove_node(it.m_p_nd);
- base_type::actual_erase_node(it.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-remove_node(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
- node_pointer p_new_child = join_node_children(p_nd);
-
-#ifdef _GLIBCXX_DEBUG
- if (p_new_child != NULL)
- base_type::assert_node_consistent(p_new_child, false);
-#endif
-
- if (p_nd == base_type::m_p_root)
- {
- if (p_new_child != NULL)
- p_new_child->m_p_prev_or_parent = NULL;
- base_type::m_p_root = p_new_child;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false);)
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_prev_or_parent != NULL);
- if (p_nd->m_p_prev_or_parent->m_p_l_child == p_nd)
- {
- if (p_new_child != NULL)
- {
- p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling;
- if (p_new_child->m_p_next_sibling != NULL)
- p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child;
- p_nd->m_p_prev_or_parent->m_p_l_child = p_new_child;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
- return;
- }
-
- p_nd->m_p_prev_or_parent->m_p_l_child = p_nd->m_p_next_sibling;
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
- return;
- }
-
- if (p_new_child != NULL)
- {
- p_new_child->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- p_new_child->m_p_next_sibling = p_nd->m_p_next_sibling;
- if (p_new_child->m_p_next_sibling != NULL)
- p_new_child->m_p_next_sibling->m_p_prev_or_parent = p_new_child;
- p_new_child->m_p_prev_or_parent->m_p_next_sibling = p_new_child;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
- return;
- }
-
- p_nd->m_p_prev_or_parent->m_p_next_sibling = p_nd->m_p_next_sibling;
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd->m_p_prev_or_parent, false);)
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-join_node_children(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- node_pointer p_ret = p_nd->m_p_l_child;
- if (p_ret == NULL)
- return NULL;
- while (p_ret->m_p_next_sibling != NULL)
- p_ret = forward_join(p_ret, p_ret->m_p_next_sibling);
- while (p_ret->m_p_prev_or_parent != p_nd)
- p_ret = back_join(p_ret->m_p_prev_or_parent, p_ret);
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_ret, false);)
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-forward_join(node_pointer p_nd, node_pointer p_next)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == p_next);
- if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
- {
- p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- base_type::make_child_of(p_nd, p_next);
- return p_next->m_p_next_sibling == NULL
- ? p_next : p_next->m_p_next_sibling;
- }
-
- if (p_next->m_p_next_sibling != NULL)
- {
- p_next->m_p_next_sibling->m_p_prev_or_parent = p_nd;
- p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
- base_type::make_child_of(p_next, p_nd);
- return p_nd->m_p_next_sibling;
- }
-
- p_nd->m_p_next_sibling = NULL;
- base_type::make_child_of(p_next, p_nd);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
- return p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-back_join(node_pointer p_nd, node_pointer p_next)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == NULL);
-
- if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
- {
- p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
- base_type::make_child_of(p_nd, p_next);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_next, false));
- return p_next;
- }
-
- p_nd->m_p_next_sibling = NULL;
- base_type::make_child_of(p_next, p_nd);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
- return p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return 0;
- }
- base_type::to_linked_list();
- node_pointer p_out = base_type::prune(pred);
- size_type ersd = 0;
- while (p_out != NULL)
- {
- ++ersd;
- node_pointer p_next = p_out->m_p_next_sibling;
- base_type::actual_erase_node(p_out);
- p_out = p_next;
- }
-
- node_pointer p_cur = base_type::m_p_root;
- base_type::m_p_root = NULL;
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
- p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = NULL;
-
- push_imp(p_cur);
- p_cur = p_next;
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return ersd;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
deleted file mode 100644
index 85efd70dc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- return base_type::m_p_root->m_value;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
deleted file mode 100644
index b00e9d13c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,101 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-push(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- node_pointer p_new_nd = base_type::get_new_node_for_insert(r_val);
-
- push_imp(p_new_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return point_iterator(p_new_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-push_imp(node_pointer p_nd)
-{
- p_nd->m_p_l_child = NULL;
-
- if (base_type::m_p_root == NULL)
- {
- p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = NULL;
-
- base_type::m_p_root = p_nd;
- }
- else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, p_nd->m_value))
- {
- p_nd->m_p_next_sibling = p_nd->m_p_prev_or_parent = NULL;
-
- base_type::make_child_of(base_type::m_p_root, p_nd);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd, false));
-
- base_type::m_p_root = p_nd;
- }
- else
- {
- base_type::make_child_of(p_nd, base_type::m_p_root);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false));
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-modify(point_iterator it, const_reference r_new_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- remove_node(it.m_p_nd);
-
- it.m_p_nd->m_value = r_new_val;
-
- push_imp(it.m_p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
deleted file mode 100644
index e19bcb695..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp
+++ /dev/null
@@ -1,216 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file pairing_heap_.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-/*
- * Pairing heap:
- * Michael L. Fredman, Robert Sedgewick, Daniel Dominic Sleator,
- * and Robert Endre Tarjan, The Pairing Heap:
- * A New Form of Self-Adjusting Heap, Algorithmica, 1(1):111-129, 1986.
- */
-
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- pairing_heap_<Value_Type, Cmp_Fn, Allocator>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_< \
- Value_Type, \
- Cmp_Fn, \
- null_left_child_next_sibling_heap_node_metadata, \
- Allocator, \
- false>
-#else
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_< \
- Value_Type, \
- Cmp_Fn, \
- null_left_child_next_sibling_heap_node_metadata, \
- Allocator>
-#endif
-
- /**
- * class description = "P4ri|\|g h3ap$">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class pairing_heap_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- typedef typename base_type::node_pointer node_pointer;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- typedef
- typename PB_DS_BASE_C_DEC::const_point_iterator
- const_point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::iterator iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
-
- pairing_heap_();
-
- pairing_heap_(const Cmp_Fn& r_cmp_fn);
-
- pairing_heap_(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~pairing_heap_();
-
- inline point_iterator
- push(const_reference r_val);
-
- void
- modify(point_iterator it, const_reference r_new_val);
-
- inline const_reference
- top() const;
-
- void
- pop();
-
- void
- erase(point_iterator it);
-
- template<typename Pred>
- size_type
- erase_if(Pred pred);
-
- template<typename Pred>
- void
- split(Pred pred, PB_DS_CLASS_C_DEC& other);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
- protected:
-
- template<typename It>
- void
- copy_from_range(It first_it, It last_it);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
- private:
-
- inline void
- push_imp(node_pointer p_nd);
-
- node_pointer
- join_node_children(node_pointer p_nd);
-
- node_pointer
- forward_join(node_pointer p_nd, node_pointer p_next);
-
- node_pointer
- back_join(node_pointer p_nd, node_pointer p_next);
-
- void
- remove_node(node_pointer p_nd);
-
- };
-
-#include <ext/pb_ds/detail/pairing_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/pairing_heap_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/pairing_heap_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/pairing_heap_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/pairing_heap_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_BASE_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
deleted file mode 100644
index 85d4ddf07..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pairing_heap_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for a pairing heap.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-void
-PB_DS_CLASS_C_DEC::
-split(Pred pred, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- other.clear();
-
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- return;
- }
-
- base_type::to_linked_list();
-
- node_pointer p_out = base_type::prune(pred);
-
- while (p_out != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
- --base_type::m_size;
-
- ++other.m_size;
-
- node_pointer p_next = p_out->m_p_next_sibling;
-
- p_out->m_p_l_child = p_out->m_p_next_sibling = p_out->m_p_prev_or_parent = NULL;
-
- other.push_imp(p_out);
-
- p_out = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- node_pointer p_cur = base_type::m_p_root;
-
- base_type::m_p_root = NULL;
-
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
-
- p_cur->m_p_l_child = p_cur->m_p_next_sibling = p_cur->m_p_prev_or_parent = NULL;
-
- push_imp(p_cur);
-
- p_cur = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- if (other.m_p_root == NULL)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- return;
- }
-
- if (base_type::m_p_root == NULL)
- base_type::m_p_root = other.m_p_root;
- else if (Cmp_Fn::operator()(base_type::m_p_root->m_value, other.m_p_root->m_value))
- {
- base_type::make_child_of(base_type::m_p_root, other.m_p_root);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(other.m_p_root, false));
-
- base_type::m_p_root = other.m_p_root;
- }
- else
- {
- base_type::make_child_of(other.m_p_root, base_type::m_p_root);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(base_type::m_p_root, false));
- }
-
- base_type::m_size += other.m_size;
-
- other.m_p_root = NULL;
- other.m_size = 0;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
deleted file mode 100644
index 15f349efb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/child_iterator.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file child_iterator.hpp
- * Contains a iterator for a patricia tree.
- */
-
-struct iterator : public const_iterator
-{
-public:
- typedef std::forward_iterator_tag iterator_category;
- typedef typename Allocator::difference_type difference_type;
- typedef node_pointer value_type;
- typedef node_pointer_pointer pointer;
- typedef node_pointer_reference reference;
-
- inline
- iterator(node_pointer_pointer p_p_cur = NULL,
- node_pointer_pointer p_p_end = NULL)
- : const_iterator(p_p_cur, p_p_end)
- { }
-
- inline bool
- operator==(const iterator& other) const
- { return const_iterator::m_p_p_cur == other.m_p_p_cur; }
-
- inline bool
- operator!=(const iterator& other) const
- { return const_iterator::m_p_p_cur != other.m_p_p_cur; }
-
- inline iterator&
- operator++()
- {
- const_iterator::operator++();
- return *this;
- }
-
- inline iterator
- operator++(int)
- {
- iterator ret_it(*this);
- operator++();
- return ret_it;
- }
-
- node_pointer_pointer
- operator->()
- {
- _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();)
- return const_iterator::m_p_p_cur;
- }
-
- node_pointer
- operator*()
- {
- _GLIBCXX_DEBUG_ONLY(const_iterator::assert_referencible();)
- return *const_iterator::m_p_p_cur;
- }
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
deleted file mode 100644
index 184b98652..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp
+++ /dev/null
@@ -1,79 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cond_dtor_entry_dealtor.hpp
- * Contains a binary tree container conditional deallocator
- */
-
-class cond_dealtor
-{
-public:
- inline
- cond_dealtor(leaf_pointer p_nd) : m_p_nd(p_nd),
- m_no_action_dtor(false),
- m_call_destructor(false)
- { }
-
- inline void
- set_no_action_dtor()
- {
- m_no_action_dtor = true;
- }
-
- inline void
- set_call_destructor()
- {
- m_call_destructor = true;
- }
-
- inline
- ~cond_dealtor()
- {
- if (m_no_action_dtor)
- return;
-
- if (m_call_destructor)
- m_p_nd->~leaf();
-
- s_leaf_allocator.deallocate(m_p_nd, 1);
- }
-
-protected:
- leaf_pointer m_p_nd;
- bool m_no_action_dtor;
- bool m_call_destructor;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
deleted file mode 100644
index bc349cf2d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_child_iterator.hpp
- * Contains a const_iterator for a patricia tree.
- */
-
-struct const_iterator
-{
-public:
- typedef std::forward_iterator_tag iterator_category;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef node_pointer value_type;
-
- typedef node_pointer_pointer pointer;
-
- typedef node_pointer_reference reference;
-
-public:
- inline
- const_iterator(node_pointer_pointer p_p_cur = NULL,
- node_pointer_pointer p_p_end = NULL)
- : m_p_p_cur(p_p_cur), m_p_p_end(p_p_end)
- { }
-
- inline bool
- operator==(const const_iterator& other) const
- { return m_p_p_cur == other.m_p_p_cur; }
-
- inline bool
- operator!=(const const_iterator& other) const
- { return m_p_p_cur != other.m_p_p_cur; }
-
- inline const_iterator&
- operator++()
- {
- do
- ++m_p_p_cur;
- while (m_p_p_cur != m_p_p_end&& * m_p_p_cur == NULL);
- return *this;
- }
-
- inline const_iterator
- operator++(int)
- {
- const_iterator ret_it(*this);
- operator++();
- return ret_it;
- }
-
- const node_pointer_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ONLY(assert_referencible();)
- return (m_p_p_cur);
- }
-
- const_node_pointer
- operator*() const
- {
- _GLIBCXX_DEBUG_ONLY(assert_referencible();)
- return (*m_p_p_cur);
- }
-
-protected:
-#ifdef _GLIBCXX_DEBUG
- void
- assert_referencible() const
- { _GLIBCXX_DEBUG_ASSERT(m_p_p_cur != m_p_p_end&& * m_p_p_cur != NULL); }
-#endif
-
-public:
- node_pointer_pointer m_p_p_cur;
- node_pointer_pointer m_p_p_end;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index ca38f932a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,214 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::head_allocator
-PB_DS_CLASS_C_DEC::s_head_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::internal_node_allocator
-PB_DS_CLASS_C_DEC::s_internal_node_allocator;
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::leaf_allocator
-PB_DS_CLASS_C_DEC::s_leaf_allocator;
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME() :
- m_p_head(s_head_allocator.allocate(1)),
- m_size(0)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const e_access_traits& r_e_access_traits) :
- synth_e_access_traits(r_e_access_traits),
- m_p_head(s_head_allocator.allocate(1)),
- m_size(0)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
-#ifdef _GLIBCXX_DEBUG
- debug_base(other),
-#endif
- synth_e_access_traits(other),
- node_update(other),
- m_p_head(s_head_allocator.allocate(1)),
- m_size(0)
-{
- initialize();
- m_size = other.m_size;
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (other.m_p_head->m_p_parent == NULL)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return;
- }
- __try
- {
- m_p_head->m_p_parent = recursive_copy_node(other.m_p_head->m_p_parent);
- }
- __catch(...)
- {
- s_head_allocator.deallocate(m_p_head, 1);
- __throw_exception_again;
- }
-
- m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent);
- m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
- m_p_head->m_p_parent->m_p_parent = m_p_head;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- value_swap(other);
- std::swap((e_access_traits& )(*this), (e_access_traits& )other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-value_swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(debug_base::swap(other);)
- std::swap(m_p_head, other.m_p_head);
- std::swap(m_size, other.m_size);
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~PB_DS_CLASS_NAME()
-{
- clear();
- s_head_allocator.deallocate(m_p_head, 1);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{
- new (m_p_head) head();
- m_p_head->m_p_parent = NULL;
- m_p_head->m_p_min = m_p_head;
- m_p_head->m_p_max = m_p_head;
- m_size = 0;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-recursive_copy_node(const_node_pointer p_other_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_other_nd != NULL);
- if (p_other_nd->m_type == pat_trie_leaf_node_type)
- {
- const_leaf_pointer p_other_leaf = static_cast<const_leaf_pointer>(p_other_nd);
-
- leaf_pointer p_new_lf = s_leaf_allocator.allocate(1);
- cond_dealtor cond(p_new_lf);
- new (p_new_lf) leaf(p_other_leaf->value());
- apply_update(p_new_lf, (node_update* )this);
- cond.set_no_action_dtor();
- return (p_new_lf);
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_other_nd->m_type == pat_trie_internal_node_type);
- node_pointer a_p_children[internal_node::arr_size];
- size_type child_i = 0;
- const_internal_node_pointer p_other_internal_nd =
- static_cast<const_internal_node_pointer>(p_other_nd);
-
- typename internal_node::const_iterator child_it =
- p_other_internal_nd->begin();
-
- internal_node_pointer p_ret;
- __try
- {
- while (child_it != p_other_internal_nd->end())
- a_p_children[child_i++] = recursive_copy_node(*(child_it++));
- p_ret = s_internal_node_allocator.allocate(1);
- }
- __catch(...)
- {
- while (child_i-- > 0)
- clear_imp(a_p_children[child_i]);
- __throw_exception_again;
- }
-
- new (p_ret) internal_node(p_other_internal_nd->get_e_ind(),
- pref_begin(a_p_children[0]));
-
- --child_i;
- _GLIBCXX_DEBUG_ASSERT(child_i > 1);
- do
- p_ret->add_child(a_p_children[child_i], pref_begin(a_p_children[child_i]),
- pref_end(a_p_children[child_i]), this);
- while (child_i-- > 0);
- apply_update(p_ret, (node_update* )this);
- return p_ret;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
deleted file mode 100644
index de7565788..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- if (m_p_head->m_p_parent != NULL)
- m_p_head->m_p_parent->assert_valid(this);
- assert_iterators();
- assert_reverse_iterators();
- if (m_p_head->m_p_parent == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min == m_p_head);
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max == m_p_head);
- _GLIBCXX_DEBUG_ASSERT(empty());
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_min->m_type == pat_trie_leaf_node_type);
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_max->m_type == pat_trie_leaf_node_type);
- _GLIBCXX_DEBUG_ASSERT(!empty());
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_iterators() const
-{
- size_type calc_size = 0;
- for (const_iterator it = begin(); it != end(); ++it)
- {
- ++calc_size;
- debug_base::check_key_exists(PB_DS_V2F(*it));
- _GLIBCXX_DEBUG_ASSERT(lower_bound(PB_DS_V2F(*it)) == it);
- _GLIBCXX_DEBUG_ASSERT(--upper_bound(PB_DS_V2F(*it)) == it);
- }
- _GLIBCXX_DEBUG_ASSERT(calc_size == m_size);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_reverse_iterators() const
-{
- size_type calc_size = 0;
- for (const_reverse_iterator it = rbegin(); it != rend(); ++it)
- {
- ++calc_size;
- const_node_pointer p_nd =
- const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(PB_DS_V2F(*it));
- _GLIBCXX_DEBUG_ASSERT(p_nd == it.m_p_nd);
- }
- _GLIBCXX_DEBUG_ASSERT(calc_size == m_size);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-recursive_count_leafs(const_node_pointer p_nd)
-{
- if (p_nd == NULL)
- return (0);
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return (1);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- size_type ret = 0;
- for (typename internal_node::const_iterator it =
- static_cast<const_internal_node_pointer>(p_nd)->begin();
- it != static_cast<const_internal_node_pointer>(p_nd)->end();
- ++it)
- ret += recursive_count_leafs(*it);
- return ret;
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
deleted file mode 100644
index 90988184a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,319 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- node_pointer p_nd = find_imp(r_key);
- if (p_nd == NULL || p_nd->m_type == pat_trie_internal_node_type)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return false;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
- if (!synth_e_access_traits::equal_keys(PB_DS_V2F(reinterpret_cast<leaf_pointer>(p_nd)->value()), r_key))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key));
- return false;
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- erase_leaf(static_cast<leaf_pointer>(p_nd));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_fixup(internal_node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) >= 1);
- if (std::distance(p_nd->begin(), p_nd->end()) == 1)
- {
- node_pointer p_parent = p_nd->m_p_parent;
- if (p_parent == m_p_head)
- m_p_head->m_p_parent =* p_nd->begin();
- else
- {
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type);
- node_pointer p_new_child =* p_nd->begin();
- static_cast<internal_node_pointer>(p_parent)->replace_child(
- p_new_child,
- pref_begin(p_new_child),
- pref_end(p_new_child),
- this);
- }
- (*p_nd->begin())->m_p_parent = p_nd->m_p_parent;
- p_nd->~internal_node();
- s_internal_node_allocator.deallocate(p_nd, 1);
-
- if (p_parent == m_p_head)
- return;
-
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_type == pat_trie_internal_node_type);
- p_nd = static_cast<internal_node_pointer>(p_parent);
- }
-
- while (true)
- {
- _GLIBCXX_DEBUG_ASSERT(std::distance(p_nd->begin(), p_nd->end()) > 1);
- p_nd->update_prefixes(this);
- apply_update(p_nd, (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(p_nd->assert_valid(this);)
- if (p_nd->m_p_parent->m_type == pat_trie_head_node_type)
- return;
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent->m_type ==
- pat_trie_internal_node_type);
-
- p_nd = static_cast<internal_node_pointer>(p_nd->m_p_parent);
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-actual_erase_leaf(leaf_pointer p_l)
-{
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
- _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_l->value())));
- p_l->~leaf();
- s_leaf_allocator.deallocate(p_l, 1);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (empty())
- return;
-
- clear_imp(m_p_head->m_p_parent);
- m_size = 0;
- initialize();
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear_imp(node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_internal_node_type)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- for (typename internal_node::iterator it =
- static_cast<internal_node_pointer>(p_nd)->begin();
- it != static_cast<internal_node_pointer>(p_nd)->end();
- ++it)
- {
- node_pointer p_child =* it;
- clear_imp(p_child);
- }
- s_internal_node_allocator.deallocate(static_cast<internal_node_pointer>(p_nd), 1);
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
- static_cast<leaf_pointer>(p_nd)->~leaf();
- s_leaf_allocator.deallocate(static_cast<leaf_pointer>(p_nd), 1);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-erase(const_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
-
- if (it == end())
- return it;
-
- const_iterator ret_it = it;
- ++ret_it;
- _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
- erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-erase(iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
-
- if (it == end())
- return it;
- iterator ret_it = it;
- ++ret_it;
- _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
- erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
-PB_DS_CLASS_C_DEC::
-erase(const_reverse_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
-
- if (it.m_p_nd == m_p_head)
- return it;
- const_reverse_iterator ret_it = it;
- ++ret_it;
-
- _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
- erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-erase(reverse_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
-
- if (it.m_p_nd == m_p_head)
- return it;
- reverse_iterator ret_it = it;
- ++ret_it;
-
- _GLIBCXX_DEBUG_ASSERT(it.m_p_nd->m_type == pat_trie_leaf_node_type);
- erase_leaf(static_cast<leaf_pointer>(it.m_p_nd));
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-#endif // #ifdef PB_DS_DATA_TRUE_INDICATOR
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- size_type num_ersd = 0;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- iterator it = begin();
- while (it != end())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- if (pred(*it))
- {
- ++num_ersd;
- it = erase(it);
- }
- else
- ++it;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_leaf(leaf_pointer p_l)
-{
- update_min_max_for_erased_leaf(p_l);
- if (p_l->m_p_parent->m_type == pat_trie_head_node_type)
- {
- _GLIBCXX_DEBUG_ASSERT(size() == 1);
- clear();
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(size() > 1);
- _GLIBCXX_DEBUG_ASSERT(p_l->m_p_parent->m_type ==
- pat_trie_internal_node_type);
-
- internal_node_pointer p_parent =
- static_cast<internal_node_pointer>(p_l->m_p_parent);
-
- p_parent->remove_child(p_l);
- erase_fixup(p_parent);
- actual_erase_leaf(p_l);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-update_min_max_for_erased_leaf(leaf_pointer p_l)
-{
- if (m_size == 1)
- {
- m_p_head->m_p_min = m_p_head;
- m_p_head->m_p_max = m_p_head;
- return;
- }
-
- if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_min))
- {
- iterator it(p_l);
- ++it;
- m_p_head->m_p_min = it.m_p_nd;
- return;
- }
-
- if (p_l == static_cast<const_leaf_pointer>(m_p_head->m_p_max))
- {
- iterator it(p_l);
- --it;
- m_p_head->m_p_max = it.m_p_nd;
- }
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
deleted file mode 100644
index 2552ead8b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp
+++ /dev/null
@@ -1,269 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- node_pointer p_nd = find_imp(r_key);
-
- if (p_nd == NULL || p_nd->m_type != pat_trie_leaf_node_type)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return end();
- }
-
- if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_nd)->value()), r_key))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return iterator(p_nd);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return end();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key) const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- const_node_pointer p_nd = const_cast<PB_DS_CLASS_C_DEC* >(this)->find_imp(r_key);
-
- if (p_nd == NULL || p_nd->m_type != pat_trie_leaf_node_type)
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return end();
- }
-
- if (synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(r_key));
- return const_iterator(const_cast<node_pointer>(p_nd));
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(r_key);)
- return end();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-find_imp(const_key_reference r_key)
-{
- if (empty())
- return (NULL);
-
- typename synth_e_access_traits::const_iterator b_it =
- synth_e_access_traits::begin(r_key);
- typename synth_e_access_traits::const_iterator e_it =
- synth_e_access_traits::end(r_key);
-
- node_pointer p_nd = m_p_head->m_p_parent;
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
-
- while (p_nd->m_type != pat_trie_leaf_node_type)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- node_pointer p_next_nd = static_cast<internal_node_pointer>(p_nd)->get_child_node(b_it, e_it, this);
-
- if (p_next_nd == NULL)
- return p_nd;
- p_nd = p_next_nd;
- }
- return p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-lower_bound_imp(const_key_reference r_key)
-{
- if (empty())
- return (m_p_head);
-
- node_pointer p_nd = m_p_head->m_p_parent;
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
-
- typename PB_DS_CLASS_C_DEC::const_e_iterator b_it =
- synth_e_access_traits::begin(r_key);
-
- typename PB_DS_CLASS_C_DEC::const_e_iterator e_it =
- synth_e_access_traits::end(r_key);
-
- size_type checked_ind = 0;
- while (true)
- {
- if (p_nd->m_type == pat_trie_leaf_node_type)
- {
- if (!synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value()), r_key))
- return p_nd;
- iterator it(p_nd);
- ++it;
- return it.m_p_nd;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- const size_type new_checked_ind =
- static_cast<internal_node_pointer>(p_nd)->get_e_ind();
-
- p_nd =
- static_cast<internal_node_pointer>(p_nd)->get_lower_bound_child_node( b_it, e_it, checked_ind, this);
- checked_ind = new_checked_ind;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-lower_bound(const_key_reference r_key)
-{ return point_iterator(lower_bound_imp(r_key)); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-lower_bound(const_key_reference r_key) const
-{
- return const_point_iterator(const_cast<PB_DS_CLASS_C_DEC* >(this)->lower_bound_imp(r_key));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-upper_bound(const_key_reference r_key)
-{
- point_iterator l_bound_it = lower_bound(r_key);
-
- _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() ||
- !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it),
- r_key));
-
- if (l_bound_it == end() ||
- synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it)))
- return l_bound_it;
-
- return ++l_bound_it;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-upper_bound(const_key_reference r_key) const
-{
- const_point_iterator l_bound_it = lower_bound(r_key);
-
- _GLIBCXX_DEBUG_ASSERT(l_bound_it == end() ||
- !synth_e_access_traits::cmp_keys(PB_DS_V2F(*l_bound_it),
- r_key));
-
- if (l_bound_it == end() ||
- synth_e_access_traits::cmp_keys(r_key, PB_DS_V2F(*l_bound_it)))
- return l_bound_it;
- return ++l_bound_it;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_e_iterator
-PB_DS_CLASS_C_DEC::
-pref_begin(const_node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return (synth_e_access_traits::begin(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value())));
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- return static_cast<const_internal_node_pointer>(p_nd)->pref_b_it();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_e_iterator
-PB_DS_CLASS_C_DEC::
-pref_end(const_node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return (synth_e_access_traits::end(PB_DS_V2F(static_cast<const_leaf_pointer>(p_nd)->value())));
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- return static_cast<const_internal_node_pointer>(p_nd)->pref_e_it();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer
-PB_DS_CLASS_C_DEC::
-leftmost_descendant(const_node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<const_leaf_pointer>(p_nd);
- return static_cast<const_internal_node_pointer>(p_nd)->leftmost_descendant();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::leaf_pointer
-PB_DS_CLASS_C_DEC::
-leftmost_descendant(node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<leaf_pointer>(p_nd);
- return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_leaf_pointer
-PB_DS_CLASS_C_DEC::
-rightmost_descendant(const_node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<const_leaf_pointer>(p_nd);
- return static_cast<const_internal_node_pointer>(p_nd)->rightmost_descendant();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::leaf_pointer
-PB_DS_CLASS_C_DEC::
-rightmost_descendant(node_pointer p_nd)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<leaf_pointer>(p_nd);
- return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant();
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp
deleted file mode 100644
index 0c7381294..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/head.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file head.hpp
- * Contains a leaf for a patricia tree.
- */
-
-#ifndef PB_DS_PAT_TRIE_IHEAD_HPP
-#define PB_DS_PAT_TRIE_IHEAD_HPP
-
-#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Type_Traits, typename E_Access_Traits, \
- typename Metadata, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- pat_trie_head<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
- template<typename Type_Traits,
- typename E_Access_Traits,
- typename Metadata,
- typename Allocator>
- struct pat_trie_head : public PB_DS_BASE_C_DEC
- {
- private:
- typedef E_Access_Traits e_access_traits;
-
- typedef
- typename Allocator::template rebind<
- e_access_traits>::other::const_pointer
- const_e_access_traits_pointer;
-
- typedef
- typename Allocator::template rebind<
- PB_DS_BASE_C_DEC>::other::pointer
- node_pointer;
-
-#ifdef _GLIBCXX_DEBUG
- typedef
- typename PB_DS_BASE_C_DEC::subtree_debug_info
- subtree_debug_info;
-#endif
-
- public:
- pat_trie_head();
-
-#ifdef _GLIBCXX_DEBUG
- virtual subtree_debug_info
- assert_valid_imp(const_e_access_traits_pointer p_traits) const;
-#endif
-
- public:
- node_pointer m_p_min;
-
- node_pointer m_p_max;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- pat_trie_head() : PB_DS_BASE_C_DEC(pat_trie_head_node_type)
- { }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::subtree_debug_info
- PB_DS_CLASS_C_DEC::
- assert_valid_imp(const_e_access_traits_pointer /*p_traits*/) const
- {
- _GLIBCXX_DEBUG_ASSERT(false);
- return subtree_debug_info();
- }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
deleted file mode 100644
index 81d7096a9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-empty() const
-{ return (m_size == 0); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-size() const
-{ return m_size; }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-max_size() const
-{ return s_internal_node_allocator.max_size(); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
deleted file mode 100644
index e6049743f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp
+++ /dev/null
@@ -1,465 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_join_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- split_join_branch_bag bag;
- if (!join_prep(other, bag))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- return;
- }
-
- m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent,
- other.m_p_head->m_p_parent, 0, bag);
-
- m_p_head->m_p_parent->m_p_parent = m_p_head;
- m_size += other.m_size;
- other.initialize();
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- m_p_head->m_p_min = leftmost_descendant(m_p_head->m_p_parent);
- m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
-}
-
-PB_DS_CLASS_T_DEC
-bool
-PB_DS_CLASS_C_DEC::
-join_prep(PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (other.m_size == 0)
- return false;
-
- if (m_size == 0)
- {
- value_swap(other);
- return false;
- }
-
- const bool greater = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(
- m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>(
- other.m_p_head->m_p_min)->value()));
-
- const bool lesser = synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(
- other.m_p_head->m_p_max)->value()),PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value()));
-
- if (!greater && !lesser)
- __throw_join_error();
-
- rec_join_prep(m_p_head->m_p_parent, other.m_p_head->m_p_parent, r_bag);
- _GLIBCXX_DEBUG_ONLY(debug_base::join(other);)
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-rec_join_prep(const_node_pointer p_l, const_node_pointer p_r, split_join_branch_bag& r_bag)
-{
- if (p_l->m_type == pat_trie_leaf_node_type)
- {
- if (p_r->m_type == pat_trie_leaf_node_type)
- {
- rec_join_prep(static_cast<const_leaf_pointer>(p_l),
- static_cast<const_leaf_pointer>(p_r), r_bag);
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
- rec_join_prep(static_cast<const_leaf_pointer>(p_l),
- static_cast<const_internal_node_pointer>(p_r), r_bag);
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type);
- if (p_r->m_type == pat_trie_leaf_node_type)
- {
- rec_join_prep(static_cast<const_internal_node_pointer>(p_l),
- static_cast<const_leaf_pointer>(p_r), r_bag);
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
-
- rec_join_prep(static_cast<const_internal_node_pointer>(p_l),
- static_cast<const_internal_node_pointer>(p_r), r_bag);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-rec_join_prep(const_leaf_pointer /*p_l*/, const_leaf_pointer /*p_r*/,
- split_join_branch_bag& r_bag)
-{ r_bag.add_branch(); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-rec_join_prep(const_leaf_pointer /*p_l*/, const_internal_node_pointer /*p_r*/,
- split_join_branch_bag& r_bag)
-{ r_bag.add_branch(); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-rec_join_prep(const_internal_node_pointer /*p_l*/, const_leaf_pointer /*p_r*/,
- split_join_branch_bag& r_bag)
-{ r_bag.add_branch(); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-rec_join_prep(const_internal_node_pointer p_l, const_internal_node_pointer p_r,
- split_join_branch_bag& r_bag)
-{
- if (p_l->get_e_ind() == p_r->get_e_ind() &&
- synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(),
- p_r->pref_b_it(), p_r->pref_e_it()))
- {
- for (typename internal_node::const_iterator it = p_r->begin();
- it != p_r->end(); ++ it)
- {
- const_node_pointer p_l_join_child = p_l->get_join_child(*it, this);
- if (p_l_join_child != NULL)
- rec_join_prep(p_l_join_child, * it, r_bag);
- }
- return;
- }
-
- if (p_r->get_e_ind() < p_l->get_e_ind() &&
- p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
- {
- const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this);
- if (p_r_join_child != NULL)
- rec_join_prep(p_r_join_child, p_l, r_bag);
- return;
- }
-
- if (p_r->get_e_ind() < p_l->get_e_ind() &&
- p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
- {
- const_node_pointer p_r_join_child = p_r->get_join_child(p_l, this);
- if (p_r_join_child != NULL)
- rec_join_prep(p_r_join_child, p_l, r_bag);
- return;
- }
- r_bag.add_branch();
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_join(node_pointer p_l, node_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ASSERT(p_r != NULL);
- if (p_l == NULL)
- {
- apply_update(p_r, (node_update* )this);
- return (p_r);
- }
-
- if (p_l->m_type == pat_trie_leaf_node_type)
- {
- if (p_r->m_type == pat_trie_leaf_node_type)
- {
- node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l),
- static_cast<leaf_pointer>(p_r), r_bag);
- apply_update(p_ret, (node_update* )this);
- return p_ret;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
- node_pointer p_ret = rec_join(static_cast<leaf_pointer>(p_l),
- static_cast<internal_node_pointer>(p_r),
- checked_ind, r_bag);
- apply_update(p_ret, (node_update* )this);
- return p_ret;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_l->m_type == pat_trie_internal_node_type);
- if (p_r->m_type == pat_trie_leaf_node_type)
- {
- node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l),
- static_cast<leaf_pointer>(p_r),
- checked_ind, r_bag);
- apply_update(p_ret, (node_update* )this);
- return p_ret;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_r->m_type == pat_trie_internal_node_type);
- node_pointer p_ret = rec_join(static_cast<internal_node_pointer>(p_l),
- static_cast<internal_node_pointer>(p_r),
- r_bag);
-
- apply_update(p_ret, (node_update* )this);
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_join(leaf_pointer p_l, leaf_pointer p_r, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ASSERT(p_r != NULL);
- if (p_l == NULL)
- return (p_r);
- node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == 2);
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_join(leaf_pointer p_l, internal_node_pointer p_r, size_type checked_ind,
- split_join_branch_bag& r_bag)
-{
-#ifdef _GLIBCXX_DEBUG
- const size_type lhs_leafs = recursive_count_leafs(p_l);
- const size_type rhs_leafs = recursive_count_leafs(p_r);
-#endif
-
- _GLIBCXX_DEBUG_ASSERT(p_r != NULL);
- node_pointer p_ret = rec_join(p_r, p_l, checked_ind, r_bag);
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs);
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_join(internal_node_pointer p_l, leaf_pointer p_r, size_type checked_ind, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ASSERT(p_l != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_r != NULL);
-
-#ifdef _GLIBCXX_DEBUG
- const size_type lhs_leafs = recursive_count_leafs(p_l);
- const size_type rhs_leafs = recursive_count_leafs(p_r);
-#endif
-
- if (!p_l->should_be_mine(pref_begin(p_r), pref_end(p_r), checked_ind, this))
- {
- node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
- _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);)
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) ==
- lhs_leafs + rhs_leafs);
- return p_ret;
- }
-
- node_pointer p_pot_child = p_l->add_child(p_r, pref_begin(p_r),
- pref_end(p_r), this);
- if (p_pot_child != p_r)
- {
- node_pointer p_new_child = rec_join(p_pot_child, p_r, p_l->get_e_ind(),
- r_bag);
-
- p_l->replace_child(p_new_child, pref_begin(p_new_child),
- pref_end(p_new_child), this);
- }
-
- _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this));
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs);
- return p_l;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_join(internal_node_pointer p_l, internal_node_pointer p_r, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ASSERT(p_l != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_r != NULL);
-
-#ifdef _GLIBCXX_DEBUG
- const size_type lhs_leafs = recursive_count_leafs(p_l);
- const size_type rhs_leafs = recursive_count_leafs(p_r);
-#endif
-
- if (p_l->get_e_ind() == p_r->get_e_ind() &&
- synth_e_access_traits::equal_prefixes(p_l->pref_b_it(), p_l->pref_e_it(),
- p_r->pref_b_it(), p_r->pref_e_it()))
- {
- for (typename internal_node::iterator it = p_r->begin();
- it != p_r->end(); ++ it)
- {
- node_pointer p_new_child = rec_join(p_l->get_join_child(*it, this),
- * it, 0, r_bag);
- p_l->replace_child(p_new_child, pref_begin(p_new_child),
- pref_end(p_new_child), this);
- }
-
- p_r->~internal_node();
- s_internal_node_allocator.deallocate(p_r, 1);
- _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);)
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_l) == lhs_leafs + rhs_leafs);
- return p_l;
- }
-
- if (p_l->get_e_ind() < p_r->get_e_ind() &&
- p_l->should_be_mine(p_r->pref_b_it(), p_r->pref_e_it(), 0, this))
- {
- node_pointer p_new_child = rec_join(p_l->get_join_child(p_r, this),
- p_r, 0, r_bag);
- p_l->replace_child(p_new_child, pref_begin(p_new_child),
- pref_end(p_new_child), this);
- _GLIBCXX_DEBUG_ONLY(p_l->assert_valid(this);)
- return p_l;
- }
-
- if (p_r->get_e_ind() < p_l->get_e_ind() &&
- p_r->should_be_mine(p_l->pref_b_it(), p_l->pref_e_it(), 0, this))
- {
- node_pointer p_new_child = rec_join(p_r->get_join_child(p_l, this), p_l,
- 0, r_bag);
-
- p_r->replace_child(p_new_child, pref_begin(p_new_child),
- pref_end(p_new_child), this);
-
- _GLIBCXX_DEBUG_ONLY(p_r->assert_valid(this);)
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_r) == lhs_leafs + rhs_leafs);
- return p_r;
- }
-
- node_pointer p_ret = insert_branch(p_l, p_r, r_bag);
- _GLIBCXX_DEBUG_ONLY(p_ret->assert_valid(this);)
- _GLIBCXX_DEBUG_ASSERT(recursive_count_leafs(p_ret) == lhs_leafs + rhs_leafs);
- return p_ret;
-}
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert(const_reference r_val)
-{
- node_pointer p_lf = find_imp(PB_DS_V2F(r_val));
- if (p_lf != NULL && p_lf->m_type == pat_trie_leaf_node_type &&
- synth_e_access_traits::equal_keys(PB_DS_V2F(static_cast<leaf_pointer>(p_lf)->value()), PB_DS_V2F(r_val)))
- {
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_exists(PB_DS_V2F(r_val)));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return std::make_pair(iterator(p_lf), false);
- }
-
- _GLIBCXX_DEBUG_ONLY(debug_base::check_key_does_not_exist(PB_DS_V2F(r_val)));
-
- leaf_pointer p_new_lf = s_leaf_allocator.allocate(1);
- cond_dealtor cond(p_new_lf);
-
- new (p_new_lf) leaf(r_val);
- apply_update(p_new_lf, (node_update* )this);
- cond.set_call_destructor();
- split_join_branch_bag bag;
- bag.add_branch();
- m_p_head->m_p_parent = rec_join(m_p_head->m_p_parent, p_new_lf, 0, bag);
- m_p_head->m_p_parent->m_p_parent = m_p_head;
- cond.set_no_action_dtor();
- ++m_size;
- update_min_max_for_inserted_leaf(p_new_lf);
- _GLIBCXX_DEBUG_ONLY(debug_base::insert_new(PB_DS_V2F(r_val));)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return std::make_pair(point_iterator(p_new_lf), true);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-keys_diff_ind(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r)
-{
- size_type diff_pos = 0;
- while (b_l != e_l)
- {
- if (b_r == e_r)
- return (diff_pos);
- if (e_access_traits::e_pos(*b_l) != e_access_traits::e_pos(*b_r))
- return (diff_pos);
- ++b_l;
- ++b_r;
- ++diff_pos;
- }
- _GLIBCXX_DEBUG_ASSERT(b_r != e_r);
- return diff_pos;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::internal_node_pointer
-PB_DS_CLASS_C_DEC::
-insert_branch(node_pointer p_l, node_pointer p_r, split_join_branch_bag& r_bag)
-{
- typename synth_e_access_traits::const_iterator left_b_it = pref_begin(p_l);
- typename synth_e_access_traits::const_iterator left_e_it = pref_end(p_l);
- typename synth_e_access_traits::const_iterator right_b_it = pref_begin(p_r);
- typename synth_e_access_traits::const_iterator right_e_it = pref_end(p_r);
-
- const size_type diff_ind = keys_diff_ind(left_b_it, left_e_it,
- right_b_it, right_e_it);
-
- internal_node_pointer p_new_nd = r_bag.get_branch();
- new (p_new_nd) internal_node(diff_ind, left_b_it);
- p_new_nd->add_child(p_l, left_b_it, left_e_it, this);
- p_new_nd->add_child(p_r, right_b_it, right_e_it, this);
- p_l->m_p_parent = p_new_nd;
- p_r->m_p_parent = p_new_nd;
- _GLIBCXX_DEBUG_ONLY(p_new_nd->assert_valid(this);)
- return (p_new_nd);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-update_min_max_for_inserted_leaf(leaf_pointer p_new_lf)
-{
- if (m_p_head->m_p_min == m_p_head ||
- synth_e_access_traits::cmp_keys(PB_DS_V2F(p_new_lf->value()),
- PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value())))
- m_p_head->m_p_min = p_new_lf;
-
- if (m_p_head->m_p_max == m_p_head ||
- synth_e_access_traits::cmp_keys(PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value()), PB_DS_V2F(p_new_lf->value())))
- m_p_head->m_p_max = p_new_lf;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp
deleted file mode 100644
index bf2f42916..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/internal_node.hpp
+++ /dev/null
@@ -1,599 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file internal_node.hpp
- * Contains an internal PB_DS_BASE_C_DEC for a patricia tree.
- */
-
-#ifndef PB_DS_PAT_TRIE_INTERNAL_NODE_HPP
-#define PB_DS_PAT_TRIE_INTERNAL_NODE_HPP
-
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Type_Traits, typename E_Access_Traits, \
- typename Metadata, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- pat_trie_internal_node<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
-#define PB_DS_LEAF_C_DEC \
- pat_trie_leaf<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
- template<typename Type_Traits,
- typename E_Access_Traits,
- typename Metadata,
- typename Allocator>
- struct pat_trie_internal_node : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
- typedef Type_Traits type_traits;
- typedef typename type_traits::value_type value_type;
- typedef typename Allocator::size_type size_type;
-
- typedef E_Access_Traits e_access_traits;
- typedef typename e_access_traits::const_iterator const_e_iterator;
- typedef typename Allocator::template rebind<e_access_traits>::other access_rebind;
- typedef typename access_rebind::const_pointer const_e_access_traits_pointer;
-
- typedef typename Allocator::template rebind<base_type>::other base_rebind;
- typedef typename base_rebind::pointer node_pointer;
- typedef typename base_rebind::const_pointer const_node_pointer;
-
- typedef PB_DS_LEAF_C_DEC leaf;
- typedef typename Allocator::template rebind<leaf>::other leaf_rebind;
- typedef typename leaf_rebind::pointer leaf_pointer;
- typedef typename leaf_rebind::const_pointer const_leaf_pointer;
-
- typedef typename Allocator::template rebind<pat_trie_internal_node>::other internal_node_rebind;
- typedef typename internal_node_rebind::pointer internal_node_pointer;
- typedef typename internal_node_rebind::const_pointer const_internal_node_pointer;
-
-#ifdef _GLIBCXX_DEBUG
- typedef typename base_type::subtree_debug_info subtree_debug_info;
-
- virtual subtree_debug_info
- assert_valid_imp(const_e_access_traits_pointer) const;
-#endif
-
- inline size_type
- get_pref_pos(const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer) const;
-
- public:
- typedef typename Allocator::template rebind<node_pointer>::other node_pointer_rebind;
- typedef typename node_pointer_rebind::pointer node_pointer_pointer;
- typedef typename node_pointer_rebind::reference node_pointer_reference;
-
- enum
- {
- arr_size = E_Access_Traits::max_size + 1
- };
- PB_DS_STATIC_ASSERT(min_arr_size, arr_size >= 2);
-
-#include <ext/pb_ds/detail/pat_trie_/const_child_iterator.hpp>
-#include <ext/pb_ds/detail/pat_trie_/child_iterator.hpp>
-
- pat_trie_internal_node(size_type, const const_e_iterator);
-
- void
- update_prefixes(const_e_access_traits_pointer);
-
- const_iterator
- begin() const;
-
- iterator
- begin();
-
- const_iterator
- end() const;
-
- iterator
- end();
-
- inline node_pointer
- get_child_node(const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer);
-
- inline const_node_pointer
- get_child_node(const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer) const;
-
- inline iterator
- get_child_it(const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer);
-
- inline node_pointer
- get_lower_bound_child_node(const_e_iterator, const_e_iterator,
- size_type, const_e_access_traits_pointer);
-
- inline node_pointer
- add_child(node_pointer, const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer);
-
- inline const_node_pointer
- get_join_child(const_node_pointer, const_e_access_traits_pointer) const;
-
- inline node_pointer
- get_join_child(node_pointer, const_e_access_traits_pointer);
-
- void
- remove_child(node_pointer p_nd);
-
- iterator
- remove_child(iterator it);
-
- void
- replace_child(node_pointer, const_e_iterator, const_e_iterator,
- const_e_access_traits_pointer);
-
- inline const_e_iterator
- pref_b_it() const;
-
- inline const_e_iterator
- pref_e_it() const;
-
- inline size_type
- get_e_ind() const;
-
- bool
- should_be_mine(const_e_iterator, const_e_iterator, size_type,
- const_e_access_traits_pointer) const;
-
- leaf_pointer
- leftmost_descendant();
-
- const_leaf_pointer
- leftmost_descendant() const;
-
- leaf_pointer
- rightmost_descendant();
-
- const_leaf_pointer
- rightmost_descendant() const;
-
-#ifdef _GLIBCXX_DEBUG
- size_type
- e_ind() const;
-#endif
-
- private:
- pat_trie_internal_node(const pat_trie_internal_node&);
-
- size_type
- get_begin_pos() const;
-
- const size_type m_e_ind;
- const_e_iterator m_pref_b_it;
- const_e_iterator m_pref_e_it;
- node_pointer m_a_p_children[arr_size];
- static leaf_rebind s_leaf_alloc;
- static internal_node_rebind s_internal_node_alloc;
- };
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::leaf_rebind
- PB_DS_CLASS_C_DEC::s_leaf_alloc;
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::internal_node_rebind
- PB_DS_CLASS_C_DEC::s_internal_node_alloc;
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_pref_pos(const_e_iterator b_it, const_e_iterator e_it,
- const_e_access_traits_pointer p_traits) const
- {
- if (static_cast<size_t>(std::distance(b_it, e_it)) <= m_e_ind)
- return 0;
- std::advance(b_it, m_e_ind);
- return 1 + p_traits->e_pos(*b_it);
- }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- pat_trie_internal_node(size_type len, const const_e_iterator it) :
- PB_DS_BASE_C_DEC(pat_trie_internal_node_type),
- m_e_ind(len), m_pref_b_it(it), m_pref_e_it(it)
- {
- std::advance(m_pref_e_it, m_e_ind);
- std::fill(m_a_p_children, m_a_p_children + arr_size,
- static_cast<node_pointer>(NULL));
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- update_prefixes(const_e_access_traits_pointer p_traits)
- {
- node_pointer p_first = *begin();
- if (p_first->m_type == pat_trie_leaf_node_type)
- {
- const_leaf_pointer p = static_cast<const_leaf_pointer>(p_first);
- m_pref_b_it = p_traits->begin(e_access_traits::extract_key(p->value()));
- }
- else
- {
- _GLIBCXX_DEBUG_ASSERT(p_first->m_type == pat_trie_internal_node_type);
- m_pref_b_it = static_cast<internal_node_pointer>(p_first)->pref_b_it();
- }
- m_pref_e_it = m_pref_b_it;
- std::advance(m_pref_e_it, m_e_ind);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_iterator
- PB_DS_CLASS_C_DEC::
- begin() const
- {
- typedef node_pointer_pointer pointer_type;
- pointer_type p = const_cast<pointer_type>(m_a_p_children);
- return const_iterator(p + get_begin_pos(), p + arr_size);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- begin()
- {
- return iterator(m_a_p_children + get_begin_pos(),
- m_a_p_children + arr_size);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_iterator
- PB_DS_CLASS_C_DEC::
- end() const
- {
- typedef node_pointer_pointer pointer_type;
- pointer_type p = const_cast<pointer_type>(m_a_p_children) + arr_size;
- return const_iterator(p, p);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- end()
- { return iterator(m_a_p_children + arr_size, m_a_p_children + arr_size); }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::node_pointer
- PB_DS_CLASS_C_DEC::
- get_child_node(const_e_iterator b_it, const_e_iterator e_it,
- const_e_access_traits_pointer p_traits)
- {
- const size_type i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
- return m_a_p_children[i];
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- get_child_it(const_e_iterator b_it, const_e_iterator e_it,
- const_e_access_traits_pointer p_traits)
- {
- const size_type i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
- _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i] != NULL);
- return iterator(m_a_p_children + i, m_a_p_children + i);
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::const_node_pointer
- PB_DS_CLASS_C_DEC::
- get_child_node(const_e_iterator b_it, const_e_iterator e_it,
- const_e_access_traits_pointer p_traits) const
- { return const_cast<node_pointer>(get_child_node(b_it, e_it, p_traits)); }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::node_pointer
- PB_DS_CLASS_C_DEC::
- get_lower_bound_child_node(const_e_iterator b_it, const_e_iterator e_it,
- size_type checked_ind,
- const_e_access_traits_pointer p_traits)
- {
- if (!should_be_mine(b_it, e_it, checked_ind, p_traits))
- {
- if (p_traits->cmp_prefixes(b_it, e_it, m_pref_b_it, m_pref_e_it, true))
- return leftmost_descendant();
- return rightmost_descendant();
- }
-
- size_type i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
-
- if (m_a_p_children[i] != NULL)
- return m_a_p_children[i];
-
- while (++i < arr_size)
- if (m_a_p_children[i] != NULL)
- {
- if (m_a_p_children[i]->m_type == pat_trie_leaf_node_type)
- return m_a_p_children[i];
-
- _GLIBCXX_DEBUG_ASSERT(m_a_p_children[i]->m_type == pat_trie_internal_node_type);
-
- return static_cast<internal_node_pointer>(m_a_p_children[i])->leftmost_descendant();
- }
-
- return rightmost_descendant();
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::node_pointer
- PB_DS_CLASS_C_DEC::
- add_child(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it,
- const_e_access_traits_pointer p_traits)
- {
- const size_type i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
- if (m_a_p_children[i] == NULL)
- {
- m_a_p_children[i] = p_nd;
- p_nd->m_p_parent = this;
- return p_nd;
- }
- return m_a_p_children[i];
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_node_pointer
- PB_DS_CLASS_C_DEC::
- get_join_child(const_node_pointer p_nd, const_e_access_traits_pointer p_traits) const
- {
- node_pointer p = const_cast<node_pointer>(p_nd);
- return const_cast<internal_node_pointer>(this)->get_join_child(p, p_traits);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::node_pointer
- PB_DS_CLASS_C_DEC::
- get_join_child(node_pointer p_nd, const_e_access_traits_pointer p_traits)
- {
- size_type i;
- const_e_iterator b_it;
- const_e_iterator e_it;
- if (p_nd->m_type == pat_trie_leaf_node_type)
- {
- typename Type_Traits::const_key_reference r_key =
- e_access_traits::extract_key(static_cast<const_leaf_pointer>(p_nd)->value());
-
- b_it = p_traits->begin(r_key);
- e_it = p_traits->end(r_key);
- }
- else
- {
- b_it = static_cast<internal_node_pointer>(p_nd)->pref_b_it();
- e_it = static_cast<internal_node_pointer>(p_nd)->pref_e_it();
- }
- i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
- return m_a_p_children[i];
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- remove_child(node_pointer p_nd)
- {
- size_type i = 0;
- for (; i < arr_size; ++i)
- if (m_a_p_children[i] == p_nd)
- {
- m_a_p_children[i] = NULL;
- return;
- }
- _GLIBCXX_DEBUG_ASSERT(i != arr_size);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- remove_child(iterator it)
- {
- iterator ret = it;
- ++ret;
- * it.m_p_p_cur = NULL;
- return ret;
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- replace_child(node_pointer p_nd, const_e_iterator b_it,
- const_e_iterator e_it,
- const_e_access_traits_pointer p_traits)
- {
- const size_type i = get_pref_pos(b_it, e_it, p_traits);
- _GLIBCXX_DEBUG_ASSERT(i < arr_size);
- m_a_p_children[i] = p_nd;
- p_nd->m_p_parent = this;
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::const_e_iterator
- PB_DS_CLASS_C_DEC::
- pref_b_it() const
- { return m_pref_b_it; }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::const_e_iterator
- PB_DS_CLASS_C_DEC::
- pref_e_it() const
- { return m_pref_e_it; }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_e_ind() const
- { return m_e_ind; }
-
- PB_DS_CLASS_T_DEC
- bool
- PB_DS_CLASS_C_DEC::
- should_be_mine(const_e_iterator b_it, const_e_iterator e_it,
- size_type checked_ind,
- const_e_access_traits_pointer p_traits) const
- {
- if (m_e_ind == 0)
- return true;
-
- const size_type num_es = std::distance(b_it, e_it);
- if (num_es < m_e_ind)
- return false;
-
- const_e_iterator key_b_it = b_it;
- std::advance(key_b_it, checked_ind);
- const_e_iterator key_e_it = b_it;
- std::advance(key_e_it, m_e_ind);
-
- const_e_iterator value_b_it = m_pref_b_it;
- std::advance(value_b_it, checked_ind);
- const_e_iterator value_e_it = m_pref_b_it;
- std::advance(value_e_it, m_e_ind);
-
- return p_traits->equal_prefixes(key_b_it, key_e_it, value_b_it,
- value_e_it);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::leaf_pointer
- PB_DS_CLASS_C_DEC::
- leftmost_descendant()
- {
- node_pointer p_pot =* begin();
- if (p_pot->m_type == pat_trie_leaf_node_type)
- return (static_cast<leaf_pointer>(p_pot));
- _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type);
- return static_cast<internal_node_pointer>(p_pot)->leftmost_descendant();
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_leaf_pointer
- PB_DS_CLASS_C_DEC::
- leftmost_descendant() const
- {
- return const_cast<internal_node_pointer>(this)->leftmost_descendant();
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::leaf_pointer
- PB_DS_CLASS_C_DEC::
- rightmost_descendant()
- {
- const size_type num_children = std::distance(begin(), end());
- _GLIBCXX_DEBUG_ASSERT(num_children >= 2);
-
- iterator it = begin();
- std::advance(it, num_children - 1);
- node_pointer p_pot =* it;
- if (p_pot->m_type == pat_trie_leaf_node_type)
- return static_cast<leaf_pointer>(p_pot);
- _GLIBCXX_DEBUG_ASSERT(p_pot->m_type == pat_trie_internal_node_type);
- return static_cast<internal_node_pointer>(p_pot)->rightmost_descendant();
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::const_leaf_pointer
- PB_DS_CLASS_C_DEC::
- rightmost_descendant() const
- {
- return const_cast<internal_node_pointer>(this)->rightmost_descendant();
- }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- e_ind() const
- { return m_e_ind; }
-#endif
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- get_begin_pos() const
- {
- size_type i;
- for (i = 0; i < arr_size && m_a_p_children[i] == NULL; ++i)
- ;
- return i;
- }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::subtree_debug_info
- PB_DS_CLASS_C_DEC::
- assert_valid_imp(const_e_access_traits_pointer p_traits) const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_internal_node_type);
- _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(pref_b_it(), pref_e_it())) == m_e_ind);
- _GLIBCXX_DEBUG_ASSERT(std::distance(begin(), end()) >= 2);
-
- for (typename pat_trie_internal_node::const_iterator it = begin();
- it != end(); ++it)
- {
- const_node_pointer p_nd =* it;
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_parent == this);
- subtree_debug_info child_ret = p_nd->assert_valid_imp(p_traits);
-
- _GLIBCXX_DEBUG_ASSERT(static_cast<size_type>(std::distance(child_ret.first, child_ret.second)) >= m_e_ind);
- _GLIBCXX_DEBUG_ASSERT(should_be_mine(child_ret.first, child_ret.second, 0, p_traits));
- _GLIBCXX_DEBUG_ASSERT(get_pref_pos(child_ret.first, child_ret.second, p_traits) == static_cast<size_type>(it.m_p_p_cur - m_a_p_children));
- }
- return std::make_pair(pref_b_it(), pref_e_it());
- }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_LEAF_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
deleted file mode 100644
index 9902d96db..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp
+++ /dev/null
@@ -1,120 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterators_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-begin()
-{ return iterator(m_p_head->m_p_min); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin() const
-{ return const_iterator(m_p_head->m_p_min); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-end()
-{ return iterator(m_p_head); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end() const
-{ return const_iterator(m_p_head); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
-PB_DS_CLASS_C_DEC::
-rbegin() const
-{
- if (empty())
- return rend();
- return --end();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-rbegin()
-{
- if (empty())
- return rend();
- return --end();
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-rend()
-{ return reverse_iterator(m_p_head); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reverse_iterator
-PB_DS_CLASS_C_DEC::
-rend() const
-{ return const_reverse_iterator(m_p_head); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin() const
-{ return const_node_iterator(m_p_head->m_p_parent, this); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_begin()
-{ return node_iterator(m_p_head->m_p_parent, this); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_node_iterator
-PB_DS_CLASS_C_DEC::
-node_end() const
-{ return const_node_iterator(NULL, this); }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-node_end()
-{ return node_iterator(NULL, this); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp
deleted file mode 100644
index 91cf14faa..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/leaf.hpp
+++ /dev/null
@@ -1,171 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file leaf.hpp
- * Contains a pat_trie_leaf for a patricia tree.
- */
-
-#ifndef PB_DS_PAT_TRIE_LEAF_HPP
-#define PB_DS_PAT_TRIE_LEAF_HPP
-
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template< \
- class Type_Traits, \
- class E_Access_Traits, \
- class Metadata, \
- class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- pat_trie_leaf< \
- Type_Traits, \
- E_Access_Traits, \
- Metadata, \
- Allocator>
-
-#define PB_DS_BASE_C_DEC \
- pat_trie_node_base< \
- Type_Traits, \
- E_Access_Traits, \
- Metadata, \
- Allocator>
-
-#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC \
- pat_trie_subtree_debug_info< \
- Type_Traits, \
- E_Access_Traits, \
- Allocator>
-
- template<typename Type_Traits,
- class E_Access_Traits,
- class Metadata,
- class Allocator>
- struct pat_trie_leaf : public PB_DS_BASE_C_DEC
- {
- private:
- typedef typename Type_Traits::value_type value_type;
-
- typedef typename Type_Traits::const_reference const_reference;
-
- typedef typename Type_Traits::reference reference;
-
- typedef
- typename Allocator::template rebind<
- E_Access_Traits>::other::const_pointer
- const_e_access_traits_pointer;
-
-#ifdef _GLIBCXX_DEBUG
- typedef
- typename PB_DS_BASE_C_DEC::subtree_debug_info
- subtree_debug_info;
-#endif
-
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- pat_trie_leaf(const_reference r_val);
-
- inline reference
- value();
-
- inline const_reference
- value() const;
-
-#ifdef _GLIBCXX_DEBUG
- virtual subtree_debug_info
- assert_valid_imp(const_e_access_traits_pointer p_traits) const;
-
- virtual
- ~pat_trie_leaf();
-#endif
-
- private:
- pat_trie_leaf(const PB_DS_CLASS_C_DEC& other);
-
- value_type m_value;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- pat_trie_leaf(const_reference r_val) :
- PB_DS_BASE_C_DEC(pat_trie_leaf_node_type), m_value(r_val)
- { }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::reference
- PB_DS_CLASS_C_DEC::
- value()
- { return m_value; }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::const_reference
- PB_DS_CLASS_C_DEC::
- value() const
- { return m_value; }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::subtree_debug_info
- PB_DS_CLASS_C_DEC::
- assert_valid_imp(const_e_access_traits_pointer p_traits) const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_type == pat_trie_leaf_node_type);
- subtree_debug_info ret;
- const_reference r_val = value();
- return std::make_pair(p_traits->begin(p_traits->extract_key(r_val)),
- p_traits->end(p_traits->extract_key(r_val)));
- }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- ~pat_trie_leaf() { }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp
deleted file mode 100644
index bb13068bc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_base.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_base.hpp
- * Contains a pat_trie_node_base base for a patricia tree.
- */
-
-#ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP
-#define PB_DS_PAT_TRIE_NODE_BASE_HPP
-
-#include <ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Type_Traits, typename E_Access_Traits, \
- typename Metadata, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- pat_trie_node_base<Type_Traits, E_Access_Traits, Metadata, Allocator>
-
-#define PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC \
- pat_trie_subtree_debug_info<Type_Traits, E_Access_Traits, Allocator>
-
- enum pat_trie_node_type
- {
- pat_trie_internal_node_type,
- pat_trie_leaf_node_type,
- pat_trie_head_node_type
- };
-
- template<typename Type_Traits,
- typename E_Access_Traits,
- typename Metadata,
- typename Allocator>
- struct pat_trie_node_base : public pat_trie_node_metadata_base<
- Metadata,
- Allocator>
- {
- public:
- typedef
- typename Allocator::template rebind<
- pat_trie_node_base>::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<
- E_Access_Traits>::other::const_pointer
- const_e_access_traits_pointer;
-
-#ifdef _GLIBCXX_DEBUG
- typedef
- std::pair<
- typename E_Access_Traits::const_iterator,
- typename E_Access_Traits::const_iterator>
- subtree_debug_info;
-#endif
-
- pat_trie_node_base(pat_trie_node_type type);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid(const_e_access_traits_pointer p_traits) const;
-
- virtual subtree_debug_info
- assert_valid_imp(const_e_access_traits_pointer p_traits) const = 0;
-#endif
-
- node_pointer m_p_parent;
- const pat_trie_node_type m_type;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- pat_trie_node_base(pat_trie_node_type type) : m_type(type)
- { }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- assert_valid(const_e_access_traits_pointer p_traits) const
- { assert_valid_imp(p_traits); }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_PAT_TRIE_SUBTREE_DEBUG_INFO_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
deleted file mode 100644
index 37250091d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_iterators.hpp
+++ /dev/null
@@ -1,338 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_iterators.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-#ifndef PB_DS_PAT_TRIE_NODE_ITERATORS_HPP
-#define PB_DS_PAT_TRIE_NODE_ITERATORS_HPP
-
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC \
- pat_trie_const_node_it_< \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- Const_Iterator, \
- Iterator, \
- E_Access_Traits, \
- Allocator>
-
-#define PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC \
- pat_trie_node_it_< \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- Const_Iterator, \
- Iterator, \
- E_Access_Traits, \
- Allocator>
-
- // Const node iterator.
- template<typename Node,
- class Leaf,
- class Head,
- class Internal_Node,
- class Const_Iterator,
- class Iterator,
- class E_Access_Traits,
- class Allocator>
- class pat_trie_const_node_it_
- {
- protected:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::const_pointer
- const_leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::pointer
- leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Internal_Node>::other::pointer
- internal_node_pointer;
-
- typedef
- typename Allocator::template rebind<
- Internal_Node>::other::const_pointer
- const_internal_node_pointer;
-
- typedef
- typename Allocator::template rebind<
- E_Access_Traits>::other::const_pointer
- const_e_access_traits_pointer;
-
- private:
- inline typename E_Access_Traits::const_iterator
- pref_begin() const
- {
- if (m_p_nd->m_type == pat_trie_leaf_node_type)
- return (m_p_traits->begin(
- m_p_traits->extract_key(
- static_cast<const_leaf_pointer>(m_p_nd)->value())));
-
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
-
- return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_b_it());
- }
-
- inline typename E_Access_Traits::const_iterator
- pref_end() const
- {
- if (m_p_nd->m_type == pat_trie_leaf_node_type)
- return (m_p_traits->end(
- m_p_traits->extract_key(
- static_cast<const_leaf_pointer>(m_p_nd)->value())));
-
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
-
- return (static_cast<const_internal_node_pointer>(m_p_nd)->pref_e_it());
- }
-
- public:
-
- // Size type.
- typedef typename Allocator::size_type size_type;
-
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // __Iterator's value type.
- typedef Const_Iterator value_type;
-
- // __Iterator's reference type.
- typedef value_type reference;
-
- // __Iterator's __const reference type.
- typedef value_type const_reference;
-
- // Element access traits.
- typedef E_Access_Traits e_access_traits;
-
- // A key's element __const iterator.
- typedef typename e_access_traits::const_iterator const_e_iterator;
-
- // Metadata type.
- typedef typename Node::metadata_type metadata_type;
-
- // Const metadata reference type.
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- // Default constructor.
- /*
- inline
- pat_trie_const_node_it_()
- */
- inline
- pat_trie_const_node_it_(node_pointer p_nd = NULL,
- const_e_access_traits_pointer p_traits = NULL)
- : m_p_nd(const_cast<node_pointer>(p_nd)), m_p_traits(p_traits)
- { }
-
- // Subtree valid prefix.
- inline std::pair<const_e_iterator, const_e_iterator>
- valid_prefix() const
- { return std::make_pair(pref_begin(), pref_end()); }
-
- // Const access; returns the __const iterator* associated with
- // the current leaf.
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(num_children() == 0);
- return Const_Iterator(m_p_nd);
- }
-
- // Metadata access.
- inline const_metadata_reference
- get_metadata() const
- { return m_p_nd->get_metadata(); }
-
- // Returns the number of children in the corresponding node.
- inline size_type
- num_children() const
- {
- if (m_p_nd->m_type == pat_trie_leaf_node_type)
- return 0;
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
- return std::distance(static_cast<internal_node_pointer>(m_p_nd)->begin(), static_cast<internal_node_pointer>(m_p_nd)->end());
- }
-
- // Returns a __const node __iterator to the corresponding node's
- // i-th child.
- PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
- get_child(size_type i) const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_internal_node_type);
- typename Internal_Node::iterator it =
- static_cast<internal_node_pointer>(m_p_nd)->begin();
-
- std::advance(it, i);
- return PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC(*it, m_p_traits);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const
- { return (m_p_nd == other.m_p_nd); }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC& other) const
- { return m_p_nd != other.m_p_nd; }
-
- private:
-
- friend class PB_DS_CLASS_C_DEC;
-
- public:
- node_pointer m_p_nd;
-
- const_e_access_traits_pointer m_p_traits;
- };
-
- // Node iterator.
- template<typename Node,
- class Leaf,
- class Head,
- class Internal_Node,
- class Const_Iterator,
- class Iterator,
- class E_Access_Traits,
- class Allocator>
- class pat_trie_node_it_ :
- public PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
-
- {
- private:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- typedef Iterator iterator;
-
- typedef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC base_type;
-
- typedef
- typename base_type::const_e_access_traits_pointer
- const_e_access_traits_pointer;
-
- typedef typename base_type::internal_node_pointer internal_node_pointer;
-
- public:
-
- // Size type.
- typedef
- typename PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC::size_type
- size_type;
-
- // __Iterator's value type.
- typedef Iterator value_type;
-
- // __Iterator's reference type.
- typedef value_type reference;
-
- // __Iterator's __const reference type.
- typedef value_type const_reference;
-
- // Default constructor.
- /*
- inline
- pat_trie_node_it_() ;
- */
-
- inline
- pat_trie_node_it_(node_pointer p_nd = NULL, const_e_access_traits_pointer p_traits = NULL) : base_type(p_nd, p_traits)
- { }
-
- // Access; returns the iterator* associated with the current leaf.
- inline reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::num_children() == 0);
- return Iterator(base_type::m_p_nd);
-
- }
-
- // Returns a node __iterator to the corresponding node's i-th child.
- PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC
- get_child(size_type i) const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_nd->m_type == pat_trie_internal_node_type);
-
- typename Internal_Node::iterator it =
- static_cast<internal_node_pointer>(base_type::m_p_nd)->begin();
-
- std::advance(it, i);
- return PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC(*it, base_type::m_p_traits);
- }
-
- private:
- friend class PB_DS_CLASS_C_DEC;
- };
-
-#undef PB_DS_PAT_TRIE_CONST_NODE_ITERATOR_C_DEC
-#undef PB_DS_PAT_TRIE_NODE_ITERATOR_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
deleted file mode 100644
index 36272eda8..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/node_metadata_base.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_metadata_base.hpp
- * Contains an internal PB_DS_BASE_C_DEC for a patricia tree.
- */
-
-#ifndef PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP
-#define PB_DS_PAT_TRIE_NODE_METADATA_BASE_HPP
-
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Metadata, class Allocator>
- struct pat_trie_node_metadata_base
- {
- public:
- typedef Metadata metadata_type;
-
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- public:
- inline const_metadata_reference
- get_metadata() const
- {
- return (m_metadata);
- }
-
- public:
- metadata_type m_metadata;
- };
-
- template<typename Allocator>
- struct pat_trie_node_metadata_base<
- null_node_metadata,
- Allocator>
- {
- public:
- typedef null_node_metadata metadata_type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_PAT_TRIE_NODE_BASE_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
deleted file mode 100644
index f6f420986..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/pat_trie_.hpp
+++ /dev/null
@@ -1,515 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file pat_trie_.hpp
- * Contains an implementation class for a patricia tree.
- */
-
-/**
- * This implementation loosely borrows ideas from:
- * 1) "Fast Mergeable Integer Maps", Okasaki, Gill 1998
- * 2) "Ptset: Sets of integers implemented as Patricia trees",
- * Jean-Christophe Filliatr, 2000
- **/
-
-#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp>
-#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/eq_fn/eq_by_less.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-#include <ext/pb_ds/tree_policy.hpp>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <iterator>
-#include <utility>
-#include <algorithm>
-#include <functional>
-#include <assert.h>
-#include <list>
-#ifdef _GLIBCXX_DEBUG
-#include <ext/pb_ds/detail/debug_map_base.hpp>
-#endif
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, typename Node_And_It_Traits, \
- typename Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME pat_trie_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME pat_trie_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Node_And_It_Traits, Allocator>
-
-#define PB_DS_TYPES_TRAITS_C_DEC \
- types_traits<Key, Mapped, Allocator, false>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_DEBUG_MAP_BASE_C_DEC \
- debug_map_base<Key, eq_by_less<Key, \
- std::less<Key> >, typename Allocator::template rebind<Key>::other::const_reference>
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
- /**
- * class description = PATRICIA trie implementation.">
- **/
- template<typename Key,
- typename Mapped,
- typename Node_And_It_Traits,
- typename Allocator>
- class PB_DS_CLASS_NAME :
-#ifdef _GLIBCXX_DEBUG
- public PB_DS_DEBUG_MAP_BASE_C_DEC,
-#endif
- public Node_And_It_Traits::synth_e_access_traits,
- public Node_And_It_Traits::node_update,
- public PB_DS_TYPES_TRAITS_C_DEC
- {
- private:
- typedef PB_DS_TYPES_TRAITS_C_DEC traits_base;
-
- typedef typename Node_And_It_Traits::synth_e_access_traits synth_e_access_traits;
- typedef typename Allocator::template rebind<synth_e_access_traits>::other::const_pointer const_e_access_traits_pointer;
- typedef typename synth_e_access_traits::const_iterator const_e_iterator;
-
- typedef typename Node_And_It_Traits::node node;
- typedef typename Allocator::template rebind<node>::other::const_pointer const_node_pointer;
-
- typedef typename Allocator::template rebind<node>::other::pointer node_pointer;
-
- typedef typename Node_And_It_Traits::head head;
- typedef typename Allocator::template rebind<head>::other head_allocator;
- typedef typename head_allocator::pointer head_pointer;
-
- typedef typename Node_And_It_Traits::leaf leaf;
- typedef typename Allocator::template rebind<leaf>::other leaf_allocator;
- typedef typename leaf_allocator::const_pointer const_leaf_pointer;
- typedef typename leaf_allocator::pointer leaf_pointer;
-
- typedef typename Node_And_It_Traits::internal_node internal_node;
- typedef typename Allocator::template rebind<internal_node>::other internal_node_allocator;
- typedef typename internal_node_allocator::const_pointer const_internal_node_pointer;
- typedef typename internal_node_allocator::pointer internal_node_pointer;
-
-#include <ext/pb_ds/detail/pat_trie_/cond_dtor_entry_dealtor.hpp>
-
-#ifdef _GLIBCXX_DEBUG
- typedef PB_DS_DEBUG_MAP_BASE_C_DEC debug_base;
-#endif
-
-#include <ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp>
-
- typedef typename Node_And_It_Traits::null_node_update_pointer null_node_update_pointer;
-
- public:
- typedef pat_trie_tag container_category;
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
-
- typedef typename traits_base::key_type key_type;
- typedef typename traits_base::key_pointer key_pointer;
- typedef typename traits_base::const_key_pointer const_key_pointer;
- typedef typename traits_base::key_reference key_reference;
- typedef typename traits_base::const_key_reference const_key_reference;
- typedef typename traits_base::mapped_type mapped_type;
- typedef typename traits_base::mapped_pointer mapped_pointer;
- typedef typename traits_base::const_mapped_pointer const_mapped_pointer;
- typedef typename traits_base::mapped_reference mapped_reference;
- typedef typename traits_base::const_mapped_reference const_mapped_reference;
- typedef typename traits_base::value_type value_type;
- typedef typename traits_base::pointer pointer;
- typedef typename traits_base::const_pointer const_pointer;
- typedef typename traits_base::reference reference;
- typedef typename traits_base::const_reference const_reference;
-
- typedef typename Node_And_It_Traits::const_iterator const_point_iterator;
- typedef typename Node_And_It_Traits::iterator point_iterator;
- typedef const_point_iterator const_iterator;
- typedef point_iterator iterator;
-
- typedef typename Node_And_It_Traits::const_reverse_iterator const_reverse_iterator;
- typedef typename Node_And_It_Traits::reverse_iterator reverse_iterator;
- typedef typename Node_And_It_Traits::const_node_iterator const_node_iterator;
- typedef typename Node_And_It_Traits::node_iterator node_iterator;
- typedef typename Node_And_It_Traits::e_access_traits e_access_traits;
- typedef typename Node_And_It_Traits::node_update node_update;
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const e_access_traits&);
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- ~PB_DS_CLASS_NAME();
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- inline size_type
- max_size() const;
-
- e_access_traits&
- get_e_access_traits();
-
- const e_access_traits&
- get_e_access_traits() const;
-
- node_update&
- get_node_update();
-
- const node_update&
- get_node_update() const;
-
- inline std::pair<point_iterator, bool>
- insert(const_reference);
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- return insert(std::make_pair(r_key, mapped_type())).first->second;
-#else
- insert(r_key);
- return traits_base::s_null_mapped;
-#endif
- }
-
- inline point_iterator
- find(const_key_reference);
-
- inline const_point_iterator
- find(const_key_reference) const;
-
- inline point_iterator
- lower_bound(const_key_reference);
-
- inline const_point_iterator
- lower_bound(const_key_reference) const;
-
- inline point_iterator
- upper_bound(const_key_reference);
-
- inline const_point_iterator
- upper_bound(const_key_reference) const;
-
- void
- clear();
-
- inline bool
- erase(const_key_reference);
-
- inline const_iterator
- erase(const_iterator);
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- inline iterator
- erase(iterator);
-#endif
-
- inline const_reverse_iterator
- erase(const_reverse_iterator);
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- inline reverse_iterator
- erase(reverse_iterator);
-#endif
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- void
- join(PB_DS_CLASS_C_DEC&);
-
- void
- split(const_key_reference, PB_DS_CLASS_C_DEC&);
-
- inline iterator
- begin();
-
- inline const_iterator
- begin() const;
-
- inline iterator
- end();
-
- inline const_iterator
- end() const;
-
- inline reverse_iterator
- rbegin();
-
- inline const_reverse_iterator
- rbegin() const;
-
- inline reverse_iterator
- rend();
-
- inline const_reverse_iterator
- rend() const;
-
- inline const_node_iterator
- node_begin() const;
-
- inline node_iterator
- node_begin();
-
- inline const_node_iterator
- node_end() const;
-
- inline node_iterator
- node_end();
-
-#ifdef PB_DS_PAT_TRIE_TRACE_
- void
- trace() const;
-#endif
-
- protected:
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- void
- value_swap(PB_DS_CLASS_C_DEC&);
-
- node_pointer
- recursive_copy_node(const_node_pointer);
-
- private:
-
- void
- initialize();
-
- inline void
- apply_update(node_pointer, null_node_update_pointer);
-
- template<typename Node_Update_>
- inline void
- apply_update(node_pointer, Node_Update_*);
-
- bool
- join_prep(PB_DS_CLASS_C_DEC&, split_join_branch_bag&);
-
- void
- rec_join_prep(const_node_pointer, const_node_pointer,
- split_join_branch_bag&);
-
- void
- rec_join_prep(const_leaf_pointer, const_leaf_pointer,
- split_join_branch_bag&);
-
- void
- rec_join_prep(const_leaf_pointer, const_internal_node_pointer,
- split_join_branch_bag&);
-
- void
- rec_join_prep(const_internal_node_pointer, const_leaf_pointer,
- split_join_branch_bag&);
-
- void
- rec_join_prep(const_internal_node_pointer, const_internal_node_pointer,
- split_join_branch_bag&);
-
- node_pointer
- rec_join(node_pointer, node_pointer, size_type, split_join_branch_bag&);
-
- node_pointer
- rec_join(leaf_pointer, leaf_pointer, split_join_branch_bag&);
-
- node_pointer
- rec_join(leaf_pointer, internal_node_pointer, size_type,
- split_join_branch_bag&);
-
- node_pointer
- rec_join(internal_node_pointer, leaf_pointer, size_type,
- split_join_branch_bag&);
-
- node_pointer
- rec_join(internal_node_pointer, internal_node_pointer,
- split_join_branch_bag&);
-
- size_type
- keys_diff_ind(typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator, typename e_access_traits::const_iterator);
-
- internal_node_pointer
- insert_branch(node_pointer, node_pointer, split_join_branch_bag&);
-
- void
- update_min_max_for_inserted_leaf(leaf_pointer);
-
- void
- erase_leaf(leaf_pointer);
-
- inline void
- actual_erase_leaf(leaf_pointer);
-
- void
- clear_imp(node_pointer);
-
- void
- erase_fixup(internal_node_pointer);
-
- void
- update_min_max_for_erased_leaf(leaf_pointer);
-
- static inline const_e_iterator
- pref_begin(const_node_pointer);
-
- static inline const_e_iterator
- pref_end(const_node_pointer);
-
- inline node_pointer
- find_imp(const_key_reference);
-
- inline node_pointer
- lower_bound_imp(const_key_reference);
-
- inline node_pointer
- upper_bound_imp(const_key_reference);
-
- inline static const_leaf_pointer
- leftmost_descendant(const_node_pointer);
-
- inline static leaf_pointer
- leftmost_descendant(node_pointer);
-
- inline static const_leaf_pointer
- rightmost_descendant(const_node_pointer);
-
- inline static leaf_pointer
- rightmost_descendant(node_pointer);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_iterators() const;
-
- void
- assert_reverse_iterators() const;
-
- static size_type
- recursive_count_leafs(const_node_pointer);
-#endif
-
-#ifdef PB_DS_PAT_TRIE_TRACE_
- static void
- trace_node(const_node_pointer, size_type);
-
- template<typename Metadata_>
- static void
- trace_node_metadata(const_node_pointer, type_to_type<Metadata_>);
-
- static void
- trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>);
-#endif
-
- leaf_pointer
- split_prep(const_key_reference, PB_DS_CLASS_C_DEC&,
- split_join_branch_bag&);
-
- node_pointer
- rec_split(node_pointer, const_e_iterator, const_e_iterator,
- PB_DS_CLASS_C_DEC&, split_join_branch_bag&);
-
- void
- split_insert_branch(size_type, const_e_iterator,
- typename internal_node::iterator,
- size_type, split_join_branch_bag&);
-
- static head_allocator s_head_allocator;
- static internal_node_allocator s_internal_node_allocator;
- static leaf_allocator s_leaf_allocator;
-
- head_pointer m_p_head;
- size_type m_size;
- };
-
-#include <ext/pb_ds/detail/pat_trie_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/iterators_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/insert_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/info_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp>
-#include <ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_TYPES_TRAITS_C_DEC
-#undef PB_DS_DEBUG_MAP_BASE_C_DEC
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
deleted file mode 100644
index cada9071c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/point_iterators.hpp
+++ /dev/null
@@ -1,484 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file point_iterators.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-#ifndef PB_DS_PAT_TRIE_FIND_ITERATORS_HPP
-#define PB_DS_PAT_TRIE_FIND_ITERATORS_HPP
-
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CONST_IT_C_DEC \
- pat_trie_const_it_< \
- Type_Traits, \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_CONST_ODIR_IT_C_DEC \
- pat_trie_const_it_< \
- Type_Traits, \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- !Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_IT_C_DEC \
- pat_trie_it_< \
- Type_Traits, \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- Is_Forward_Iterator, \
- Allocator>
-
-#define PB_DS_ODIR_IT_C_DEC \
- pat_trie_it_< \
- Type_Traits, \
- Node, \
- Leaf, \
- Head, \
- Internal_Node, \
- !Is_Forward_Iterator, \
- Allocator>
-
-
- // Const iterator.
- template<typename Type_Traits,
- class Node,
- class Leaf,
- class Head,
- class Internal_Node,
- bool Is_Forward_Iterator,
- class Allocator>
- class pat_trie_const_it_
- {
-
- private:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::const_pointer
- const_leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::pointer
- leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Head>::other::pointer
- head_pointer;
-
- typedef
- typename Allocator::template rebind<
- Internal_Node>::other::pointer
- internal_node_pointer;
-
- public:
-
- typedef std::bidirectional_iterator_tag iterator_category;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef typename Type_Traits::value_type value_type;
-
- typedef typename Type_Traits::pointer pointer;
-
- typedef typename Type_Traits::const_pointer const_pointer;
-
- typedef typename Type_Traits::reference reference;
-
- typedef typename Type_Traits::const_reference const_reference;
-
- public:
-
- inline
- pat_trie_const_it_(node_pointer p_nd = NULL) : m_p_nd(p_nd)
- { }
-
- inline
- pat_trie_const_it_(const PB_DS_CONST_ODIR_IT_C_DEC& other)
- : m_p_nd(other.m_p_nd)
- { }
-
- inline
- PB_DS_CONST_IT_C_DEC&
- operator=(const PB_DS_CONST_IT_C_DEC& other)
- {
- m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline
- PB_DS_CONST_IT_C_DEC&
- operator=(const PB_DS_CONST_ODIR_IT_C_DEC& other)
- {
- m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline const_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type);
- return &static_cast<leaf_pointer>(m_p_nd)->value();
- }
-
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_nd->m_type == pat_trie_leaf_node_type);
- return static_cast<leaf_pointer>(m_p_nd)->value();
- }
-
- inline bool
- operator==(const PB_DS_CONST_IT_C_DEC& other) const
- { return (m_p_nd == other.m_p_nd); }
-
- inline bool
- operator==(const PB_DS_CONST_ODIR_IT_C_DEC& other) const
- { return (m_p_nd == other.m_p_nd); }
-
- inline bool
- operator!=(const PB_DS_CONST_IT_C_DEC& other) const
- { return (m_p_nd != other.m_p_nd); }
-
- inline bool
- operator!=(const PB_DS_CONST_ODIR_IT_C_DEC& other) const
- { return (m_p_nd != other.m_p_nd); }
-
- inline PB_DS_CONST_IT_C_DEC&
- operator++()
- {
- inc(integral_constant<int,Is_Forward_Iterator>());
- return *this;
- }
-
- inline PB_DS_CONST_IT_C_DEC
- operator++(int)
- {
- PB_DS_CONST_IT_C_DEC ret_it(m_p_nd);
- operator++();
- return ret_it;
- }
-
- inline PB_DS_CONST_IT_C_DEC&
- operator--()
- {
- dec(integral_constant<int,Is_Forward_Iterator>());
- return *this;
- }
-
- inline PB_DS_CONST_IT_C_DEC
- operator--(int)
- {
- PB_DS_CONST_IT_C_DEC ret_it(m_p_nd);
- operator--();
- return ret_it;
- }
-
- protected:
- inline void
- inc(false_type)
- { dec(true_type()); }
-
- void
- inc(true_type)
- {
- if (m_p_nd->m_type == pat_trie_head_node_type)
- {
- m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_min;
- return;
- }
-
- node_pointer p_y = m_p_nd->m_p_parent;
- while (p_y->m_type != pat_trie_head_node_type &&
- get_larger_sibling(m_p_nd) == NULL)
- {
- m_p_nd = p_y;
- p_y = p_y->m_p_parent;
- }
-
- if (p_y->m_type == pat_trie_head_node_type)
- {
- m_p_nd = p_y;
- return;
- }
- m_p_nd = leftmost_descendant(get_larger_sibling(m_p_nd));
- }
-
- inline void
- dec(false_type)
- { inc(true_type()); }
-
- void
- dec(true_type)
- {
- if (m_p_nd->m_type == pat_trie_head_node_type)
- {
- m_p_nd = static_cast<head_pointer>(m_p_nd)->m_p_max;
- return;
- }
-
- node_pointer p_y = m_p_nd->m_p_parent;
- while (p_y->m_type != pat_trie_head_node_type &&
- get_smaller_sibling(m_p_nd) == NULL)
- {
- m_p_nd = p_y;
- p_y = p_y->m_p_parent;
- }
-
- if (p_y->m_type == pat_trie_head_node_type)
- {
- m_p_nd = p_y;
- return;
- }
- m_p_nd = rightmost_descendant(get_smaller_sibling(m_p_nd));
- }
-
- inline static node_pointer
- get_larger_sibling(node_pointer p_nd)
- {
- internal_node_pointer p_parent =
- static_cast<internal_node_pointer>(p_nd->m_p_parent);
-
- typename Internal_Node::iterator it = p_parent->begin();
- while (*it != p_nd)
- ++it;
-
- typename Internal_Node::iterator next_it = it;
- ++next_it;
- return ((next_it == p_parent->end())? NULL :* next_it);
- }
-
- inline static node_pointer
- get_smaller_sibling(node_pointer p_nd)
- {
- internal_node_pointer p_parent =
- static_cast<internal_node_pointer>(p_nd->m_p_parent);
-
- typename Internal_Node::iterator it = p_parent->begin();
-
- if (*it == p_nd)
- return (NULL);
- typename Internal_Node::iterator prev_it;
- do
- {
- prev_it = it;
- ++it;
- if (*it == p_nd)
- return (*prev_it);
- }
- while (true);
-
- _GLIBCXX_DEBUG_ASSERT(false);
- return (NULL);
- }
-
- inline static leaf_pointer
- leftmost_descendant(node_pointer p_nd)
- {
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<leaf_pointer>(p_nd);
- return static_cast<internal_node_pointer>(p_nd)->leftmost_descendant();
- }
-
- inline static leaf_pointer
- rightmost_descendant(node_pointer p_nd)
- {
- if (p_nd->m_type == pat_trie_leaf_node_type)
- return static_cast<leaf_pointer>(p_nd);
- return static_cast<internal_node_pointer>(p_nd)->rightmost_descendant();
- }
-
- public:
- node_pointer m_p_nd;
- };
-
- // Iterator.
- template<typename Type_Traits,
- class Node,
- class Leaf,
- class Head,
- class Internal_Node,
- bool Is_Forward_Iterator,
- class Allocator>
- class pat_trie_it_ :
- public PB_DS_CONST_IT_C_DEC
-
- {
- private:
- typedef
- typename Allocator::template rebind<
- Node>::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::const_pointer
- const_leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Leaf>::other::pointer
- leaf_pointer;
-
- typedef
- typename Allocator::template rebind<
- Head>::other::pointer
- head_pointer;
-
- typedef
- typename Allocator::template rebind<
- Internal_Node>::other::pointer
- internal_node_pointer;
-
- public:
- typedef typename Type_Traits::value_type value_type;
-
- typedef typename Type_Traits::const_pointer const_pointer;
-
- typedef typename Type_Traits::pointer pointer;
-
- typedef typename Type_Traits::const_reference const_reference;
-
- typedef typename Type_Traits::reference reference;
-
- inline
- pat_trie_it_(node_pointer p_nd = NULL) : PB_DS_CONST_IT_C_DEC((node_pointer)p_nd)
- { }
-
- inline
- pat_trie_it_(const PB_DS_ODIR_IT_C_DEC& other) : PB_DS_CONST_IT_C_DEC(other.m_p_nd)
- { }
-
- inline
- PB_DS_IT_C_DEC&
- operator=(const PB_DS_IT_C_DEC& other)
- {
- base_it_type::m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline
- PB_DS_IT_C_DEC&
- operator=(const PB_DS_ODIR_IT_C_DEC& other)
- {
- base_it_type::m_p_nd = other.m_p_nd;
- return *this;
- }
-
- inline pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type);
-
- return &static_cast<leaf_pointer>(base_it_type::m_p_nd)->value();
- }
-
- inline reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_it_type::m_p_nd->m_type == pat_trie_leaf_node_type);
- return static_cast<leaf_pointer>(base_it_type::m_p_nd)->value();
- }
-
- inline PB_DS_IT_C_DEC&
- operator++()
- {
- PB_DS_CONST_IT_C_DEC::
- operator++();
- return *this;
- }
-
- inline PB_DS_IT_C_DEC
- operator++(int)
- {
- PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd);
- operator++();
- return ret_it;
- }
-
- inline PB_DS_IT_C_DEC&
- operator--()
- {
- PB_DS_CONST_IT_C_DEC::operator--();
- return *this;
- }
-
- inline PB_DS_IT_C_DEC
- operator--(int)
- {
- PB_DS_IT_C_DEC ret_it(base_it_type::m_p_nd);
- operator--();
- return ret_it;
- }
-
- protected:
- typedef PB_DS_CONST_IT_C_DEC base_it_type;
-
- friend class PB_DS_CLASS_C_DEC;
- };
-
-#undef PB_DS_CONST_IT_C_DEC
-#undef PB_DS_CONST_ODIR_IT_C_DEC
-#undef PB_DS_IT_C_DEC
-#undef PB_DS_ODIR_IT_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
deleted file mode 100644
index 79bfe4283..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/policy_access_fn_imps.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file policy_access_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::e_access_traits&
-PB_DS_CLASS_C_DEC::
-get_e_access_traits()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const typename PB_DS_CLASS_C_DEC::e_access_traits&
-PB_DS_CLASS_C_DEC::
-get_e_access_traits() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_update&
-PB_DS_CLASS_C_DEC::
-get_node_update()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const typename PB_DS_CLASS_C_DEC::node_update&
-PB_DS_CLASS_C_DEC::
-get_node_update() const
-{ return *this; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
deleted file mode 100644
index 52edf2506..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/r_erase_fn_imps.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file r_erase_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-actual_erase_node(node_pointer p_z)
-{
- _GLIBCXX_DEBUG_ASSERT(m_size > 0);
- --m_size;
- _GLIBCXX_DEBUG_ONLY(erase_existing(PB_DS_V2F(p_z->m_value)));
- p_z->~node();
- s_node_allocator.deallocate(p_z, 1);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_min_max_for_erased_node(node_pointer p_z)
-{
- if (m_size == 1)
- {
- m_p_head->m_p_left = m_p_head->m_p_right = m_p_head;
- return;
- }
-
- if (m_p_head->m_p_left == p_z)
- {
- iterator it(p_z);
- ++it;
- m_p_head->m_p_left = it.m_p_nd;
- }
- else if (m_p_head->m_p_right == p_z)
- {
- iterator it(p_z);
- --it;
- m_p_head->m_p_right = it.m_p_nd;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);)
- clear_imp(m_p_head->m_p_parent);
- m_size = 0;
- initialize();
- _GLIBCXX_DEBUG_ONLY(debug_base::clear();)
- _GLIBCXX_DEBUG_ONLY(assert_valid(true, true);)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear_imp(node_pointer p_nd)
-{
- if (p_nd == NULL)
- return;
- clear_imp(p_nd->m_p_left);
- clear_imp(p_nd->m_p_right);
- p_nd->~Node();
- s_node_allocator.deallocate(p_nd, 1);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
deleted file mode 100644
index c0809fa48..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/rotate_fn_imps.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file rotate_fn_imps.hpp
- * Contains imps for rotating nodes.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_left(node_pointer p_x)
-{
- node_pointer p_y = p_x->m_p_right;
- p_x->m_p_right = p_y->m_p_left;
-
- if (p_y->m_p_left != NULL)
- p_y->m_p_left->m_p_parent = p_x;
-
- p_y->m_p_parent = p_x->m_p_parent;
- if (p_x == m_p_head->m_p_parent)
- m_p_head->m_p_parent = p_y;
- else if (p_x == p_x->m_p_parent->m_p_left)
- p_x->m_p_parent->m_p_left = p_y;
- else
- p_x->m_p_parent->m_p_right = p_y;
-
- p_y->m_p_left = p_x;
- p_x->m_p_parent = p_y;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
-
- apply_update(p_x, (Node_Update* )this);
- apply_update(p_x->m_p_parent, (Node_Update* )this);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_right(node_pointer p_x)
-{
- node_pointer p_y = p_x->m_p_left;
- p_x->m_p_left = p_y->m_p_right;
-
- if (p_y->m_p_right != NULL)
- p_y->m_p_right->m_p_parent = p_x;
-
- p_y->m_p_parent = p_x->m_p_parent;
- if (p_x == m_p_head->m_p_parent)
- m_p_head->m_p_parent = p_y;
- else if (p_x == p_x->m_p_parent->m_p_right)
- p_x->m_p_parent->m_p_right = p_y;
- else
- p_x->m_p_parent->m_p_left = p_y;
-
- p_y->m_p_right = p_x;
- p_x->m_p_parent = p_y;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_x);)
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y);)
-
- apply_update(p_x, (Node_Update* )this);
- apply_update(p_x->m_p_parent, (Node_Update* )this);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-rotate_parent(node_pointer p_nd)
-{
- node_pointer p_parent = p_nd->m_p_parent;
- if (p_nd == p_parent->m_p_left)
- rotate_right(p_parent);
- else
- rotate_left(p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_parent = p_nd);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_left == p_parent || p_nd->m_p_right == p_parent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer p_nd, Node_Update_* p_update)
-{
- p_update->operator()(& PB_DS_V2F(p_nd->m_value),(p_nd->m_p_left == NULL) ?
- NULL :
- & PB_DS_V2F(p_nd->m_p_left->m_value),(p_nd->m_p_right == NULL) ?
- NULL :
- & PB_DS_V2F(p_nd->m_p_right->m_value));
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-inline void
-PB_DS_CLASS_C_DEC::
-update_to_top(node_pointer p_nd, Node_Update_* p_update)
-{
- while (p_nd != m_p_head)
- {
- apply_update(p_nd, p_update);
- p_nd = p_nd->m_p_parent;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/)
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
deleted file mode 100644
index 9779a4bcd..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_fn_imps.hpp
+++ /dev/null
@@ -1,254 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_fn_imps.hpp
- * Contains an implementation class for bin_search_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- split_join_branch_bag bag;
- leaf_pointer p_split_lf = split_prep(r_key, other, bag);
- if (p_split_lf == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(bag.empty());
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(!bag.empty());
- other.clear();
- m_p_head->m_p_parent = rec_split(m_p_head->m_p_parent,
- pref_begin(p_split_lf),
- pref_end(p_split_lf),
- other,
- bag);
-
- m_p_head->m_p_parent->m_p_parent = m_p_head;
-
- other.m_p_head->m_p_max = m_p_head->m_p_max;
- m_p_head->m_p_max = rightmost_descendant(m_p_head->m_p_parent);
- other.m_p_head->m_p_min =
- other.leftmost_descendant(other.m_p_head->m_p_parent);
-
- other.m_size = std::distance(other.PB_DS_CLASS_C_DEC::begin(),
- other.PB_DS_CLASS_C_DEC::end());
- m_size -= other.m_size;
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::leaf_pointer
-PB_DS_CLASS_C_DEC::
-split_prep(const_key_reference r_key, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
-{
- _GLIBCXX_DEBUG_ASSERT(r_bag.empty());
- if (m_size == 0)
- {
- other.clear();
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- return (NULL);
- }
-
- if (synth_e_access_traits::cmp_keys(r_key,
- PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_min)->value())))
- {
- other.clear();
- value_swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- return (NULL);
- }
-
- if (!synth_e_access_traits::cmp_keys(r_key,
- PB_DS_V2F(static_cast<const_leaf_pointer>(m_p_head->m_p_max)->value())))
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid(););
- _GLIBCXX_DEBUG_ONLY(other.assert_valid(););
- return (NULL);
- }
-
- iterator it = lower_bound(r_key);
-
- if (!synth_e_access_traits::equal_keys(PB_DS_V2F(*it), r_key))
- --it;
-
- node_pointer p_nd = it.m_p_nd;
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_leaf_node_type);
- leaf_pointer p_ret_l = static_cast<leaf_pointer>(p_nd);
- while (p_nd->m_type != pat_trie_head_node_type)
- {
- r_bag.add_branch();
- p_nd = p_nd->m_p_parent;
- }
- _GLIBCXX_DEBUG_ONLY(debug_base::split(r_key,(synth_e_access_traits& )(*this), other);)
-
- return (p_ret_l);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-rec_split(node_pointer p_nd, const_e_iterator b_it, const_e_iterator e_it, PB_DS_CLASS_C_DEC& other, split_join_branch_bag& r_bag)
-{
- if (p_nd->m_type == pat_trie_leaf_node_type)
- {
- _GLIBCXX_DEBUG_ASSERT(other.m_p_head->m_p_parent == NULL);
- return (p_nd);
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_type == pat_trie_internal_node_type);
- internal_node_pointer p_internal_nd = static_cast<internal_node_pointer>(p_nd);
-
- node_pointer p_child_ret = rec_split(p_internal_nd->get_child_node(b_it, e_it, this), b_it, e_it, other, r_bag);
-
- _GLIBCXX_DEBUG_ONLY(p_child_ret->assert_valid(this);)
- p_internal_nd->replace_child(p_child_ret, b_it, e_it, this);
- apply_update(p_internal_nd, (node_update* )this);
-
- typename internal_node::iterator child_it =
- p_internal_nd->get_child_it(b_it, e_it, this);
-
- const size_type lhs_num_children =
- std::distance(p_internal_nd->begin(), child_it) + 1;
-
- _GLIBCXX_DEBUG_ASSERT(lhs_num_children > 0);
-
- size_type rhs_num_children =
- std::distance(p_internal_nd->begin(), p_internal_nd->end()) -
- lhs_num_children;
-
- if (rhs_num_children == 0)
- {
- apply_update(p_internal_nd, (node_update* )this);
- return (p_internal_nd);
- }
-
- ++child_it;
- other.split_insert_branch(p_internal_nd->get_e_ind(),
- b_it, child_it, rhs_num_children, r_bag);
-
- child_it = p_internal_nd->get_child_it(b_it, e_it, this);
- ++child_it;
- while (rhs_num_children != 0)
- {
- child_it = p_internal_nd->remove_child(child_it);
- --rhs_num_children;
- }
-
- apply_update(p_internal_nd, (node_update* )this);
- _GLIBCXX_DEBUG_ASSERT(std::distance(p_internal_nd->begin(),
- p_internal_nd->end()) >= 1);
-
- if (std::distance(p_internal_nd->begin(), p_internal_nd->end()) > 1)
- {
- p_internal_nd->update_prefixes(this);
- _GLIBCXX_DEBUG_ONLY(p_internal_nd->assert_valid(this);)
- apply_update(p_internal_nd, (node_update* )this);
- return (p_internal_nd);
- }
-
- node_pointer p_ret =* p_internal_nd->begin();
- p_internal_nd->~internal_node();
- s_internal_node_allocator.deallocate(p_internal_nd, 1);
- apply_update(p_ret, (node_update* )this);
- return (p_ret);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split_insert_branch(size_type e_ind, const_e_iterator b_it, typename internal_node::iterator child_b_it, size_type num_children, split_join_branch_bag& r_bag)
-{
-#ifdef _GLIBCXX_DEBUG
- if (m_p_head->m_p_parent != NULL)
- m_p_head->m_p_parent->assert_valid(this);
-#endif
-
- const size_type total_num_children =((m_p_head->m_p_parent == NULL)? 0 : 1) + num_children;
-
- if (total_num_children == 0)
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == NULL);
- return;
- }
-
- if (total_num_children == 1)
- {
- if (m_p_head->m_p_parent != NULL)
- {
- _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(m_p_head->m_p_parent == NULL);
- m_p_head->m_p_parent =* child_b_it;
- m_p_head->m_p_parent->m_p_parent = m_p_head;
- apply_update(m_p_head->m_p_parent, (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(total_num_children > 1);
- internal_node_pointer p_new_root = r_bag.get_branch();
- new (p_new_root) internal_node(e_ind, b_it);
- size_type num_inserted = 0;
- while (num_inserted++ < num_children)
- {
- _GLIBCXX_DEBUG_ONLY((*child_b_it)->assert_valid(this);)
- p_new_root->add_child(*child_b_it, pref_begin(*child_b_it),
- pref_end(*child_b_it), this);
- ++child_b_it;
- }
-
- if (m_p_head->m_p_parent != NULL)
- p_new_root->add_child(m_p_head->m_p_parent,
- pref_begin(m_p_head->m_p_parent),
- pref_end(m_p_head->m_p_parent), this);
-
- m_p_head->m_p_parent = p_new_root;
- p_new_root->m_p_parent = m_p_head;
- apply_update(m_p_head->m_p_parent, (node_update* )this);
- _GLIBCXX_DEBUG_ONLY(m_p_head->m_p_parent->assert_valid(this);)
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
deleted file mode 100644
index 9cecae517..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/split_join_branch_bag.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_branch_bag.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-class split_join_branch_bag
-{
-private:
- typedef
- std::list<
- internal_node_pointer,
- typename Allocator::template rebind<
- internal_node_pointer>::other>
- bag_t;
-
-public:
-
- void
- add_branch()
- {
- internal_node_pointer p_nd = s_internal_node_allocator.allocate(1);
- __try
- {
- m_bag.push_back(p_nd);
- }
- __catch(...)
- {
- s_internal_node_allocator.deallocate(p_nd, 1);
- __throw_exception_again;
- }
- }
-
- internal_node_pointer
- get_branch()
- {
- _GLIBCXX_DEBUG_ASSERT(!m_bag.empty());
- internal_node_pointer p_nd =* m_bag.begin();
- m_bag.pop_front();
- return p_nd;
- }
-
- ~split_join_branch_bag()
- {
- while (!m_bag.empty())
- {
- internal_node_pointer p_nd =* m_bag.begin();
- s_internal_node_allocator.deallocate(p_nd, 1);
- m_bag.pop_front();
- }
- }
-
- inline bool
- empty() const
- { return m_bag.empty(); }
-
-private:
- bag_t m_bag;
-};
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
deleted file mode 100644
index abf5f1185..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp
+++ /dev/null
@@ -1,229 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file synth_e_access_traits.hpp
- * Contains an implementation class for a patricia tree.
- */
-
-#ifndef PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
-#define PB_DS_SYNTH_E_ACCESS_TRAITS_HPP
-
-#include <ext/pb_ds/detail/type_utils.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC \
- template<typename Type_Traits, bool Set, class E_Access_Traits>
-
-#define PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC \
- synth_e_access_traits< \
- Type_Traits, \
- Set, \
- E_Access_Traits>
-
- template<typename Type_Traits, bool Set, class E_Access_Traits>
- struct synth_e_access_traits : public E_Access_Traits
- {
-
- private:
- typedef E_Access_Traits base_type;
-
- typedef Type_Traits type_traits;
-
- typedef typename type_traits::const_key_reference const_key_reference;
-
- typedef typename type_traits::const_reference const_reference;
-
- public:
- synth_e_access_traits();
-
- synth_e_access_traits(const E_Access_Traits& r_traits);
-
- inline bool
- equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = true) const;
-
- bool
- equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
-
- bool
- cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after = false) const;
-
- bool
- cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const;
-
- inline static const_key_reference
- extract_key(const_reference r_val);
-
-#ifdef _GLIBCXX_DEBUG
- bool
- operator()(const_key_reference r_lhs, const_key_reference r_rhs);
-#endif
-
- private:
- inline static const_key_reference
- extract_key(const_reference r_val, true_type);
-
- inline static const_key_reference
- extract_key(const_reference r_val, false_type);
-
- private:
- static integral_constant<int,Set> s_set_ind;
- };
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- integral_constant<int,Set>
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::s_set_ind;
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- synth_e_access_traits()
- { }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- synth_e_access_traits(const E_Access_Traits& r_traits) :
- E_Access_Traits(r_traits)
- { }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- inline bool
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- equal_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /*= false */) const
- {
- while (b_l != e_l)
- {
- if (b_r == e_r)
- return (false);
- if (base_type::e_pos(*b_l) != base_type::e_pos(*b_r))
- return (false);
- ++b_l;
- ++b_r;
- }
- return (!compare_after || b_r == e_r);
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- bool
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- equal_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
- {
- return (equal_prefixes(base_type::begin(r_lhs_key),
- base_type::end(r_lhs_key),
- base_type::begin(r_rhs_key),
- base_type::end(r_rhs_key),
- true));
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- bool
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- cmp_prefixes(typename base_type::const_iterator b_l, typename base_type::const_iterator e_l, typename base_type::const_iterator b_r, typename base_type::const_iterator e_r, bool compare_after /* = false*/) const
- {
- while (b_l != e_l)
- {
- if (b_r == e_r)
- return (false);
- const typename base_type::size_type l_pos =
- base_type::e_pos(*b_l);
- const typename base_type::size_type r_pos =
- base_type::e_pos(*b_r);
- if (l_pos != r_pos)
- return (l_pos < r_pos);
- ++b_l;
- ++b_r;
- }
-
- if (!compare_after)
- return (false);
- return (b_r != e_r);
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- bool
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- cmp_keys(const_key_reference r_lhs_key, const_key_reference r_rhs_key) const
- {
- return (cmp_prefixes(base_type::begin(r_lhs_key),
- base_type::end(r_lhs_key),
- base_type::begin(r_rhs_key),
- base_type::end(r_rhs_key),
- true));
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- extract_key(const_reference r_val)
- {
- return (extract_key(r_val, s_set_ind));
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- extract_key(const_reference r_val, true_type)
- {
- return (r_val);
- }
-
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- inline typename PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::const_key_reference
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- extract_key(const_reference r_val, false_type)
- {
- return (r_val.first);
- }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
- bool
- PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC::
- operator()(const_key_reference r_lhs, const_key_reference r_rhs)
- {
- return (cmp_keys(r_lhs, r_rhs));
- }
-#endif
-
-#undef PB_DS_SYNTH_E_ACCESS_TRAITS_T_DEC
-#undef PB_DS_SYNTH_E_ACCESS_TRAITS_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
deleted file mode 100644
index e4b20943b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-#ifdef PB_DS_PAT_TRIE_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << std::endl;
- if (m_p_head->m_p_parent == NULL)
- return;
- trace_node(m_p_head->m_p_parent, 0);
- std::cerr << std::endl;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_node(const_node_pointer p_nd, size_type level)
-{
- for (size_type i = 0; i < level; ++i)
- std::cerr << ' ';
- std::cerr << p_nd << " ";
- std::cerr << ((p_nd->m_type == pat_trie_leaf_node_type) ? "l " : "i ");
-
- trace_node_metadata(p_nd, type_to_type<typename node::metadata_type>());
- typename e_access_traits::const_iterator el_it = pref_begin(p_nd);
- while (el_it != pref_end(p_nd))
- {
- std::cerr <<* el_it;
- ++el_it;
- }
-
- if (p_nd->m_type == pat_trie_leaf_node_type)
- {
- std::cerr << std::endl;
- return;
- }
-
- const_internal_node_pointer p_internal =
- static_cast<const_internal_node_pointer>(p_nd);
-
- std::cerr << " " <<
- static_cast<unsigned long>(p_internal->get_e_ind()) << std::endl;
-
- const size_type num_children = std::distance(p_internal->begin(),
- p_internal->end());
-
- for (size_type child_i = 0; child_i < num_children; ++child_i)
- {
- typename internal_node::const_iterator child_it =
- p_internal->begin();
- std::advance(child_it, num_children - child_i - 1);
- trace_node(*child_it, level + 1);
- }
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Metadata_>
-void
-PB_DS_CLASS_C_DEC::
-trace_node_metadata(const_node_pointer p_nd, type_to_type<Metadata_>)
-{
- std::cerr << "(" << static_cast<unsigned long>(p_nd->get_metadata()) << ") ";
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace_node_metadata(const_node_pointer, type_to_type<null_node_metadata>)
-{ }
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
deleted file mode 100644
index c8e7f587b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/traits.hpp
+++ /dev/null
@@ -1,350 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-#ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/pat_trie_/node_base.hpp>
-#include <ext/pb_ds/detail/pat_trie_/head.hpp>
-#include <ext/pb_ds/detail/pat_trie_/leaf.hpp>
-#include <ext/pb_ds/detail/pat_trie_/internal_node.hpp>
-#include <ext/pb_ds/detail/pat_trie_/point_iterators.hpp>
-#include <ext/pb_ds/detail/pat_trie_/node_iterators.hpp>
-#include <ext/pb_ds/detail/pat_trie_/synth_e_access_traits.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Key,
- typename Mapped,
- class E_Access_Traits,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct trie_traits<
- Key,
- Mapped,
- E_Access_Traits,
- Node_Update,
- pat_trie_tag,
- Allocator>
- {
- private:
- typedef types_traits< Key, Mapped, Allocator, false> type_traits;
-
- public:
- typedef
- typename trie_node_metadata_selector<
- Key,
- Mapped,
- E_Access_Traits,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef E_Access_Traits e_access_traits;
-
- typedef
- __gnu_pbds::detail::synth_e_access_traits<
- type_traits,
- false,
- e_access_traits>
- synth_e_access_traits;
-
- typedef
- pat_trie_node_base<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- node;
-
- typedef
- pat_trie_leaf<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- leaf;
-
- typedef
- pat_trie_head<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- head;
-
- typedef
- pat_trie_internal_node<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- internal_node;
-
- typedef
- pat_trie_const_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- true,
- Allocator>
- const_iterator;
-
- typedef
- pat_trie_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- true,
- Allocator>
- iterator;
-
- typedef
- pat_trie_const_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- false,
- Allocator>
- const_reverse_iterator;
-
- typedef
- pat_trie_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- false,
- Allocator>
- reverse_iterator;
-
- typedef
- pat_trie_const_node_it_<
- node,
- leaf,
- head,
- internal_node,
- const_iterator,
- iterator,
- synth_e_access_traits,
- Allocator>
- const_node_iterator;
-
- typedef
- pat_trie_node_it_<
- node,
- leaf,
- head,
- internal_node,
- const_iterator,
- iterator,
- synth_e_access_traits,
- Allocator>
- node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- E_Access_Traits,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_trie_node_update<
- const_node_iterator,
- node_iterator,
- E_Access_Traits,
- Allocator>*
- null_node_update_pointer;
- };
-
- template<typename Key,
- class E_Access_Traits,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct trie_traits<
- Key,
- null_mapped_type,
- E_Access_Traits,
- Node_Update,
- pat_trie_tag,
- Allocator>
- {
- private:
- typedef
- types_traits<
- Key,
- null_mapped_type,
- Allocator,
- false>
- type_traits;
-
- public:
- typedef
- typename trie_node_metadata_selector<
- Key,
- null_mapped_type,
- E_Access_Traits,
- Node_Update,
- Allocator>::type
- metadata_type;
-
- typedef E_Access_Traits e_access_traits;
-
- typedef
- __gnu_pbds::detail::synth_e_access_traits<
- type_traits,
- true,
- e_access_traits>
- synth_e_access_traits;
-
- typedef
- pat_trie_node_base<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- node;
-
- typedef
- pat_trie_leaf<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- leaf;
-
- typedef
- pat_trie_head<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- head;
-
- typedef
- pat_trie_internal_node<
- type_traits,
- synth_e_access_traits,
- metadata_type,
- Allocator>
- internal_node;
-
- typedef
- pat_trie_const_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- true,
- Allocator>
- const_iterator;
-
- typedef const_iterator iterator;
-
- typedef
- pat_trie_const_it_<
- type_traits,
- node,
- leaf,
- head,
- internal_node,
- false,
- Allocator>
- const_reverse_iterator;
-
- typedef const_reverse_iterator reverse_iterator;
-
- typedef
- pat_trie_const_node_it_<
- node,
- leaf,
- head,
- internal_node,
- const_iterator,
- iterator,
- synth_e_access_traits,
- Allocator>
- const_node_iterator;
-
- typedef const_node_iterator node_iterator;
-
- typedef
- Node_Update<
- const_node_iterator,
- node_iterator,
- E_Access_Traits,
- Allocator>
- node_update;
-
- typedef
- __gnu_pbds::null_trie_node_update<
- const_node_iterator,
- const_node_iterator,
- E_Access_Traits,
- Allocator>*
- null_node_update_pointer;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_PAT_TRIE_NODE_AND_IT_TRAITS_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
deleted file mode 100644
index 6d275e731..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/pat_trie_/update_fn_imps.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file update_fn_imps.hpp
- * Contains an implementation class for pat_trie_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer /*p_nd*/, null_node_update_pointer)
-{ }
-
-PB_DS_CLASS_T_DEC
-template<typename Node_Update_>
-inline void
-PB_DS_CLASS_C_DEC::
-apply_update(node_pointer p_nd, Node_Update_* /*p_update*/)
-{
- Node_Update_::operator()(node_iterator(p_nd, this),
- const_node_iterator(NULL, this));
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
deleted file mode 100644
index ad05c4f57..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/priority_queue_base_dispatch.hpp
+++ /dev/null
@@ -1,91 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file priority_queue_base_dispatch.hpp
- * Contains an pqiative container dispatching base.
- */
-
-#ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
-#define PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
-
-#include <ext/pb_ds/detail/pairing_heap_/pairing_heap_.hpp>
-#include <ext/pb_ds/detail/binomial_heap_/binomial_heap_.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp>
-#include <ext/pb_ds/detail/binary_heap_/binary_heap_.hpp>
-#include <ext/pb_ds/detail/thin_heap_/thin_heap_.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Value_Type, typename Cmp_Fn, typename Tag, typename Allocator>
- struct priority_queue_base_dispatch;
-
- template<typename Value_Type, typename Cmp_Fn, typename Allocator>
- struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, pairing_heap_tag, Allocator>
- {
- typedef pairing_heap_< Value_Type, Cmp_Fn, Allocator> type;
- };
-
- template<typename Value_Type, typename Cmp_Fn, typename Allocator>
- struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binomial_heap_tag, Allocator>
- {
- typedef binomial_heap_< Value_Type, Cmp_Fn, Allocator> type;
- };
-
- template<typename Value_Type, typename Cmp_Fn, typename Allocator>
- struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, rc_binomial_heap_tag, Allocator>
- {
- typedef rc_binomial_heap_< Value_Type, Cmp_Fn, Allocator> type;
- };
-
- template<typename Value_Type, typename Cmp_Fn, typename Allocator>
- struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, binary_heap_tag, Allocator>
- {
- typedef binary_heap_< Value_Type, Cmp_Fn, Allocator> type;
- };
-
- template<typename Value_Type, typename Cmp_Fn, typename Allocator>
- struct priority_queue_base_dispatch<Value_Type, Cmp_Fn, thin_heap_tag, Allocator>
- {
- typedef thin_heap_< Value_Type, Cmp_Fn, Allocator> type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_PRIORITY_QUEUE_BASE_DS_DISPATCHER_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 1abfe21de..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,100 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME()
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
- base_type(r_cmp_fn)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
- base_type(r_cmp_fn, r_node_update)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
- base_type(other)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- base_type::swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{ base_type::m_p_head->m_red = true; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
deleted file mode 100644
index 18ecc4230..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-assert_node_consistent(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- return 1;
-
- const size_type l_height = assert_node_consistent(p_nd->m_p_left);
- const size_type r_height = assert_node_consistent(p_nd->m_p_right);
- if (p_nd->m_red)
- {
- _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_left));
- _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_nd->m_p_right));
- }
- _GLIBCXX_DEBUG_ASSERT(l_height == r_height);
- return (p_nd->m_red ? 0 : 1) + l_height;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- base_type::assert_valid();
- const node_pointer p_head = base_type::m_p_head;
- _GLIBCXX_DEBUG_ASSERT(p_head->m_red);
- if (p_head->m_p_parent != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(!p_head->m_p_parent->m_red);
- assert_node_consistent(p_head->m_p_parent);
- }
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
deleted file mode 100644
index 685b8a51b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,289 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- point_iterator it = find(r_key);
- if (it == base_type::end())
- return false;
- erase(it);
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-erase(iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- if (it == base_type::end())
- return it;
-
- iterator ret_it = it;
- ++ret_it;
- erase_node(it.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-erase(reverse_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- if (it.m_p_nd == base_type::m_p_head)
- return it;
-
- reverse_iterator ret_it = it;
- ++ret_it;
- erase_node(it.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- size_type num_ersd = 0;
- iterator it = base_type::begin();
- while (it != base_type::end())
- {
- if (pred(*it))
- {
- ++num_ersd;
- it = erase(it);
- }
- else
- ++it;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_node(node_pointer p_nd)
-{
- remove_node(p_nd);
- base_type::actual_erase_node(p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-remove_node(node_pointer p_z)
-{
- update_min_max_for_erased_node(p_z);
- node_pointer p_y = p_z;
- node_pointer p_x = NULL;
- node_pointer p_new_x_parent = NULL;
-
- if (p_y->m_p_left == NULL)
- p_x = p_y->m_p_right;
- else if (p_y->m_p_right == NULL)
- p_x = p_y->m_p_left;
- else
- {
- p_y = p_y->m_p_right;
- while (p_y->m_p_left != NULL)
- p_y = p_y->m_p_left;
- p_x = p_y->m_p_right;
- }
-
- if (p_y == p_z)
- {
- p_new_x_parent = p_y->m_p_parent;
- if (p_x != NULL)
- p_x->m_p_parent = p_y->m_p_parent;
-
- if (base_type::m_p_head->m_p_parent == p_z)
- base_type::m_p_head->m_p_parent = p_x;
- else if (p_z->m_p_parent->m_p_left == p_z)
- {
- p_y->m_p_left = p_z->m_p_parent;
- p_z->m_p_parent->m_p_left = p_x;
- }
- else
- {
- p_y->m_p_left = NULL;
- p_z->m_p_parent->m_p_right = p_x;
- }
- }
- else
- {
- p_z->m_p_left->m_p_parent = p_y;
- p_y->m_p_left = p_z->m_p_left;
- if (p_y != p_z->m_p_right)
- {
- p_new_x_parent = p_y->m_p_parent;
- if (p_x != NULL)
- p_x->m_p_parent = p_y->m_p_parent;
- p_y->m_p_parent->m_p_left = p_x;
- p_y->m_p_right = p_z->m_p_right;
- p_z->m_p_right->m_p_parent = p_y;
- }
- else
- p_new_x_parent = p_y;
-
- if (base_type::m_p_head->m_p_parent == p_z)
- base_type::m_p_head->m_p_parent = p_y;
- else if (p_z->m_p_parent->m_p_left == p_z)
- p_z->m_p_parent->m_p_left = p_y;
- else
- p_z->m_p_parent->m_p_right = p_y;
-
- p_y->m_p_parent = p_z->m_p_parent;
- std::swap(p_y->m_red, p_z->m_red);
- p_y = p_z;
- }
-
- update_to_top(p_new_x_parent, (node_update* )this);
-
- if (p_y->m_red)
- return;
-
- remove_fixup(p_x, p_new_x_parent);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-remove_fixup(node_pointer p_x, node_pointer p_new_x_parent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_x == NULL || p_x->m_p_parent == p_new_x_parent);
-
- while (p_x != base_type::m_p_head->m_p_parent && is_effectively_black(p_x))
- if (p_x == p_new_x_parent->m_p_left)
- {
- node_pointer p_w = p_new_x_parent->m_p_right;
- if (p_w->m_red)
- {
- p_w->m_red = false;
- p_new_x_parent->m_red = true;
- base_type::rotate_left(p_new_x_parent);
- p_w = p_new_x_parent->m_p_right;
- }
-
- if (is_effectively_black(p_w->m_p_left)
- && is_effectively_black(p_w->m_p_right))
- {
- p_w->m_red = true;
- p_x = p_new_x_parent;
- p_new_x_parent = p_new_x_parent->m_p_parent;
- }
- else
- {
- if (is_effectively_black(p_w->m_p_right))
- {
- if (p_w->m_p_left != NULL)
- p_w->m_p_left->m_red = false;
-
- p_w->m_red = true;
- base_type::rotate_right(p_w);
- p_w = p_new_x_parent->m_p_right;
- }
-
- p_w->m_red = p_new_x_parent->m_red;
- p_new_x_parent->m_red = false;
-
- if (p_w->m_p_right != NULL)
- p_w->m_p_right->m_red = false;
-
- base_type::rotate_left(p_new_x_parent);
- update_to_top(p_new_x_parent, (node_update* )this);
- break;
- }
- }
- else
- {
- node_pointer p_w = p_new_x_parent->m_p_left;
- if (p_w->m_red == true)
- {
- p_w->m_red = false;
- p_new_x_parent->m_red = true;
- base_type::rotate_right(p_new_x_parent);
- p_w = p_new_x_parent->m_p_left;
- }
-
- if (is_effectively_black(p_w->m_p_right)
- && is_effectively_black(p_w->m_p_left))
- {
- p_w->m_red = true;
- p_x = p_new_x_parent;
- p_new_x_parent = p_new_x_parent->m_p_parent;
- }
- else
- {
- if (is_effectively_black(p_w->m_p_left))
- {
- if (p_w->m_p_right != NULL)
- p_w->m_p_right->m_red = false;
-
- p_w->m_red = true;
- base_type::rotate_left(p_w);
- p_w = p_new_x_parent->m_p_left;
- }
-
- p_w->m_red = p_new_x_parent->m_red;
- p_new_x_parent->m_red = false;
-
- if (p_w->m_p_left != NULL)
- p_w->m_p_left->m_red = false;
-
- base_type::rotate_right(p_new_x_parent);
- update_to_top(p_new_x_parent, (node_update* )this);
- break;
- }
- }
-
- if (p_x != NULL)
- p_x->m_red = false;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
deleted file mode 100644
index 9378e1565..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/find_fn_imps.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
deleted file mode 100644
index 6b43b1a99..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_effectively_black(const node_pointer p_nd)
-{ return (p_nd == NULL || !p_nd->m_red); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
deleted file mode 100644
index 16a5d1edb..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,115 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert(const_reference r_value)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- std::pair<point_iterator, bool> ins_pair = base_type::insert_leaf(r_value);
- if (ins_pair.second == true)
- {
- ins_pair.first.m_p_nd->m_red = true;
- _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();)
- insert_fixup(ins_pair.first.m_p_nd);
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return ins_pair;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-insert_fixup(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_red == true);
- while (p_nd != base_type::m_p_head->m_p_parent && p_nd->m_p_parent->m_red)
- {
- if (p_nd->m_p_parent == p_nd->m_p_parent->m_p_parent->m_p_left)
- {
- node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_right;
- if (p_y != NULL && p_y->m_red)
- {
- p_nd->m_p_parent->m_red = false;
- p_y->m_red = false;
- p_nd->m_p_parent->m_p_parent->m_red = true;
- p_nd = p_nd->m_p_parent->m_p_parent;
- }
- else
- {
- if (p_nd == p_nd->m_p_parent->m_p_right)
- {
- p_nd = p_nd->m_p_parent;
- base_type::rotate_left(p_nd);
- }
- p_nd->m_p_parent->m_red = false;
- p_nd->m_p_parent->m_p_parent->m_red = true;
- base_type::rotate_right(p_nd->m_p_parent->m_p_parent);
- }
- }
- else
- {
- node_pointer p_y = p_nd->m_p_parent->m_p_parent->m_p_left;
- if (p_y != NULL && p_y->m_red)
- {
- p_nd->m_p_parent->m_red = false;
- p_y->m_red = false;
- p_nd->m_p_parent->m_p_parent->m_red = true;
- p_nd = p_nd->m_p_parent->m_p_parent;
- }
- else
- {
- if (p_nd == p_nd->m_p_parent->m_p_left)
- {
- p_nd = p_nd->m_p_parent;
- base_type::rotate_right(p_nd);
- }
- p_nd->m_p_parent->m_red = false;
- p_nd->m_p_parent->m_p_parent->m_red = true;
- base_type::rotate_left(p_nd->m_p_parent->m_p_parent);
- }
- }
- }
-
- base_type::update_to_top(p_nd, (node_update* )this);
- base_type::m_p_head->m_p_parent->m_red = false;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
deleted file mode 100644
index 3f24c762c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/node.hpp
+++ /dev/null
@@ -1,138 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node.hpp
- * Contains an implementation for rb_tree_.
- */
-
-#ifndef PB_DS_RB_TREE_NODE_HPP
-#define PB_DS_RB_TREE_NODE_HPP
-
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Value_Type, class Metadata, class Allocator>
- struct rb_tree_node_
- {
- public:
- typedef Value_Type value_type;
- typedef Metadata metadata_type;
-
- typedef
- typename Allocator::template rebind<
- rb_tree_node_<
- Value_Type,
- Metadata,
- Allocator> >::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::reference
- metadata_reference;
-
- typedef
- typename Allocator::template rebind<
- metadata_type>::other::const_reference
- const_metadata_reference;
-
- inline bool
- special() const
- { return m_red; }
-
- inline const_metadata_reference
- get_metadata() const
- { return m_metadata; }
-
- inline metadata_reference
- get_metadata()
- { return m_metadata; }
-
-#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
- void
- trace() const
- {
- std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> ")
- << "(" << m_metadata << ")";
- }
-#endif
-
- node_pointer m_p_left;
- node_pointer m_p_right;
- node_pointer m_p_parent;
- value_type m_value;
- bool m_red;
- metadata_type m_metadata;
- };
-
- template<typename Value_Type, class Allocator>
- struct rb_tree_node_<Value_Type, null_node_metadata, Allocator>
- {
- public:
- typedef Value_Type value_type;
- typedef null_node_metadata metadata_type;
-
- typedef
- typename Allocator::template rebind<
- rb_tree_node_<
- Value_Type,
- null_node_metadata,
- Allocator> >::other::pointer
- node_pointer;
-
- inline bool
- special() const
- { return m_red; }
-
-#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
- void
- trace() const
- { std::cout << PB_DS_V2F(m_value) <<(m_red? " <r> " : " <b> "); }
-#endif
-
- node_pointer m_p_left;
- node_pointer m_p_right;
- node_pointer m_p_parent;
- value_type m_value;
- bool m_red;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
deleted file mode 100644
index 9010def74..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/rb_tree_.hpp
+++ /dev/null
@@ -1,280 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file rb_tree_.hpp
- * Contains an implementation for rb_tree_.
- */
-/*
- * This implementation uses an idea from the SGI STL (using a "header" node
- * which is needed for efficient iteration).
- */
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
-#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
-#endif
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
-#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
-#endif
-#endif
-
-#include <ext/pb_ds/detail/standard_policies.hpp>
-#include <ext/pb_ds/detail/basic_types.hpp>
-#include <utility>
-#include <vector>
-#include <assert.h>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, typename Cmp_Fn, \
- typename Node_And_It_Traits, typename Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME rb_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME rb_tree_no_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
- template<typename Key,
- typename Mapped,
- typename Cmp_Fn,
- typename Node_And_It_Traits,
- typename Allocator>
- class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
- typedef typename base_type::node_pointer node_pointer;
-
- public:
- typedef Cmp_Fn cmp_fn;
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef typename base_type::key_type key_type;
- typedef typename base_type::key_pointer key_pointer;
- typedef typename base_type::const_key_pointer const_key_pointer;
- typedef typename base_type::key_reference key_reference;
- typedef typename base_type::const_key_reference const_key_reference;
- typedef typename base_type::mapped_type mapped_type;
- typedef typename base_type::mapped_pointer mapped_pointer;
- typedef typename base_type::const_mapped_pointer const_mapped_pointer;
- typedef typename base_type::mapped_reference mapped_reference;
- typedef typename base_type::const_mapped_reference const_mapped_reference;
- typedef typename base_type::value_type value_type;
- typedef typename base_type::pointer pointer;
- typedef typename base_type::const_pointer const_pointer;
- typedef typename base_type::reference reference;
- typedef typename base_type::const_reference const_reference;
- typedef typename base_type::point_iterator point_iterator;
- typedef typename base_type::const_iterator const_point_iterator;
- typedef typename base_type::iterator iterator;
- typedef typename base_type::const_iterator const_iterator;
- typedef typename base_type::reverse_iterator reverse_iterator;
- typedef typename base_type::const_reverse_iterator const_reverse_iterator;
- typedef typename base_type::node_update node_update;
-
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const Cmp_Fn&);
-
- PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&);
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- inline std::pair<point_iterator, bool>
- insert(const_reference);
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- std::pair<point_iterator, bool> ins_pair =
- base_type::insert_leaf(value_type(r_key, mapped_type()));
-
- if (ins_pair.second == true)
- {
- ins_pair.first.m_p_nd->m_red = true;
- _GLIBCXX_DEBUG_ONLY(this->structure_only_assert_valid();)
- insert_fixup(ins_pair.first.m_p_nd);
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return ins_pair.first.m_p_nd->m_value.second;
-#else
- insert(r_key);
- return base_type::s_null_mapped;
-#endif
- }
-
- inline bool
- erase(const_key_reference);
-
- inline iterator
- erase(iterator);
-
- inline reverse_iterator
- erase(reverse_iterator);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- void
- join(PB_DS_CLASS_C_DEC&);
-
- void
- split(const_key_reference, PB_DS_CLASS_C_DEC&);
-
- protected:
-
- private:
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- size_type
- assert_node_consistent(const node_pointer) const;
-#endif
-
- inline static bool
- is_effectively_black(const node_pointer);
-
- void
- initialize();
-
- void
- insert_fixup(node_pointer);
-
- void
- erase_node(node_pointer);
-
- void
- remove_node(node_pointer);
-
- void
- remove_fixup(node_pointer, node_pointer);
-
- void
- split_imp(node_pointer, PB_DS_CLASS_C_DEC&);
-
- inline node_pointer
- split_min();
-
- std::pair<node_pointer, node_pointer>
- split_min_imp();
-
- void
- join_imp(node_pointer, node_pointer);
-
- std::pair<node_pointer, node_pointer>
- find_join_pos_right(node_pointer, size_type, size_type);
-
- std::pair<node_pointer, node_pointer>
- find_join_pos_left(node_pointer, size_type, size_type);
-
- inline size_type
- black_height(node_pointer);
-
- void
- split_at_node(node_pointer, PB_DS_CLASS_C_DEC&);
- };
-
-#include <ext/pb_ds/detail/rb_tree_map_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/rb_tree_map_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/rb_tree_map_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/rb_tree_map_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp>
-#include <ext/pb_ds/detail/rb_tree_map_/info_fn_imps.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_BASE_CLASS_NAME
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
-
- } // namespace detail
-} // namespace __gnu_pbds
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
deleted file mode 100644
index 9776a8d9a..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,313 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation for rb_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
- if (base_type::join_prep(other) == false)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- const node_pointer p_x = other.split_min();
- join_imp(p_x, other.m_p_head->m_p_parent);
- base_type::join_finish(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(base_type::assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-join_imp(node_pointer p_x, node_pointer p_r)
-{
- _GLIBCXX_DEBUG_ASSERT(p_x != NULL);
- if (p_r != NULL)
- p_r->m_red = false;
-
- const size_type h = black_height(base_type::m_p_head->m_p_parent);
- const size_type other_h = black_height(p_r);
- node_pointer p_x_l;
- node_pointer p_x_r;
- std::pair<node_pointer, node_pointer> join_pos;
- const bool right_join = h >= other_h;
- if (right_join)
- {
- join_pos = find_join_pos_right(base_type::m_p_head->m_p_parent,
- h, other_h);
- p_x_l = join_pos.first;
- p_x_r = p_r;
- }
- else
- {
- p_x_l = base_type::m_p_head->m_p_parent;
- base_type::m_p_head->m_p_parent = p_r;
- if (p_r != NULL)
- p_r->m_p_parent = base_type::m_p_head;
-
- join_pos = find_join_pos_left(base_type::m_p_head->m_p_parent,
- h, other_h);
- p_x_r = join_pos.first;
- }
-
- node_pointer p_parent = join_pos.second;
- if (p_parent == base_type::m_p_head)
- {
- base_type::m_p_head->m_p_parent = p_x;
- p_x->m_p_parent = base_type::m_p_head;
- }
- else
- {
- p_x->m_p_parent = p_parent;
- if (right_join)
- p_x->m_p_parent->m_p_right = p_x;
- else
- p_x->m_p_parent->m_p_left = p_x;
- }
-
- p_x->m_p_left = p_x_l;
- if (p_x_l != NULL)
- p_x_l->m_p_parent = p_x;
-
- p_x->m_p_right = p_x_r;
- if (p_x_r != NULL)
- p_x_r->m_p_parent = p_x;
-
- p_x->m_red = true;
-
- base_type::initialize_min_max();
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
- base_type::update_to_top(p_x, (node_update* )this);
- insert_fixup(p_x);
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid());
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-split_min()
-{
- node_pointer p_min = base_type::m_p_head->m_p_left;
-
-#ifdef _GLIBCXX_DEBUG
- const node_pointer p_head = base_type::m_p_head;
- _GLIBCXX_DEBUG_ASSERT(p_min != p_head);
-#endif
-
- remove_node(p_min);
- return p_min;
-}
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::node_pointer,
- typename PB_DS_CLASS_C_DEC::node_pointer>
-PB_DS_CLASS_C_DEC::
-find_join_pos_right(node_pointer p_l, size_type h_l, size_type h_r)
-{
- _GLIBCXX_DEBUG_ASSERT(h_l >= h_r);
-
- if (base_type::m_p_head->m_p_parent == NULL)
- return (std::make_pair((node_pointer)NULL, base_type::m_p_head));
-
- node_pointer p_l_parent = base_type::m_p_head;
- while (h_l > h_r)
- {
- if (p_l->m_red == false)
- {
- _GLIBCXX_DEBUG_ASSERT(h_l > 0);
- --h_l;
- }
-
- p_l_parent = p_l;
- p_l = p_l->m_p_right;
- }
-
- if (!is_effectively_black(p_l))
- {
- p_l_parent = p_l;
- p_l = p_l->m_p_right;
- }
-
- _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_l));
- _GLIBCXX_DEBUG_ASSERT(black_height(p_l) == h_r);
- _GLIBCXX_DEBUG_ASSERT(p_l == NULL || p_l->m_p_parent == p_l_parent);
- return std::make_pair(p_l, p_l_parent);
-}
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::node_pointer,
- typename PB_DS_CLASS_C_DEC::node_pointer>
-PB_DS_CLASS_C_DEC::
-find_join_pos_left(node_pointer p_r, size_type h_l, size_type h_r)
-{
- _GLIBCXX_DEBUG_ASSERT(h_r > h_l);
- if (base_type::m_p_head->m_p_parent == NULL)
- return (std::make_pair((node_pointer)NULL,
- base_type::m_p_head));
- node_pointer p_r_parent = base_type::m_p_head;
- while (h_r > h_l)
- {
- if (p_r->m_red == false)
- {
- _GLIBCXX_DEBUG_ASSERT(h_r > 0);
- --h_r;
- }
-
- p_r_parent = p_r;
- p_r = p_r->m_p_left;
- }
-
- if (!is_effectively_black(p_r))
- {
- p_r_parent = p_r;
- p_r = p_r->m_p_left;
- }
-
- _GLIBCXX_DEBUG_ASSERT(is_effectively_black(p_r));
- _GLIBCXX_DEBUG_ASSERT(black_height(p_r) == h_l);
- _GLIBCXX_DEBUG_ASSERT(p_r == NULL || p_r->m_p_parent == p_r_parent);
- return std::make_pair(p_r, p_r_parent);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-black_height(node_pointer p_nd)
-{
- size_type h = 1;
- while (p_nd != NULL)
- {
- if (p_nd->m_red == false)
- ++h;
- p_nd = p_nd->m_p_left;
- }
- return h;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(base_type::assert_valid();)
-
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.base_type::assert_valid();)
-
- if (base_type::split_prep(r_key, other) == false)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
- return;
- }
-
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();)
- node_pointer p_nd = upper_bound(r_key).m_p_nd;
- do
- {
- node_pointer p_next_nd = p_nd->m_p_parent;
- if (Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
- split_at_node(p_nd, other);
-
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid();)
- p_nd = p_next_nd;
- }
- while (p_nd != base_type::m_p_head);
-
- base_type::split_finish(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split_at_node(node_pointer p_nd, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
-
- node_pointer p_l = p_nd->m_p_left;
- node_pointer p_r = p_nd->m_p_right;
- node_pointer p_parent = p_nd->m_p_parent;
- if (p_parent == base_type::m_p_head)
- {
- base_type::m_p_head->m_p_parent = p_l;
- if (p_l != NULL)
- {
- p_l->m_p_parent = base_type::m_p_head;
- p_l->m_red = false;
- }
- }
- else
- {
- if (p_parent->m_p_left == p_nd)
- p_parent->m_p_left = p_l;
- else
- p_parent->m_p_right = p_l;
-
- if (p_l != NULL)
- p_l->m_p_parent = p_parent;
-
- update_to_top(p_parent, (node_update* )this);
-
- if (!p_nd->m_red)
- remove_fixup(p_l, p_parent);
- }
-
- base_type::initialize_min_max();
- other.join_imp(p_nd, p_r);
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.base_type::structure_only_assert_valid());
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
deleted file mode 100644
index 531d8e46e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rb_tree_map_/traits.hpp
+++ /dev/null
@@ -1,124 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation for rb_tree_.
- */
-
-#ifndef PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_RB_TREE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/rb_tree_map_/node.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key,
- typename Mapped,
- typename Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- typename Allocator>
- struct tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- rb_tree_tag,
- Allocator> : public bin_search_tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- rb_tree_node_<
- typename types_traits<
- Key,
- Mapped,
- Allocator,
- false>::value_type,
- typename tree_node_metadata_selector<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- Allocator>::type,
- Allocator>,
- Allocator>
- { };
-
- template<typename Key,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- rb_tree_tag,
- Allocator> : public bin_search_tree_traits<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- rb_tree_node_<
- typename types_traits<
- Key,
- null_mapped_type,
- Allocator,
- false>::value_type,
- typename tree_node_metadata_selector<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- Allocator>::type,
- Allocator>,
- Allocator>
- { };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index bf4dcfefd..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,88 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-rc_binomial_heap_()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-rc_binomial_heap_(const Cmp_Fn& r_cmp_fn) :
- PB_DS_BASE_C_DEC(r_cmp_fn)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other) :
- PB_DS_BASE_C_DEC(other)
-{
- make_binomial_heap();
-
- base_type::find_max();
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~rc_binomial_heap_()
-{ }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- base_type::swap(other);
-
- m_rc.swap(other.m_rc);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
deleted file mode 100644
index 0194905c4..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,121 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- base_type::assert_valid(false);
- if (!base_type::empty())
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_max != NULL);
- base_type::assert_max();
- }
-
- m_rc.assert_valid();
-
- if (m_rc.empty())
- {
- base_type::assert_valid(true);
- _GLIBCXX_DEBUG_ASSERT(next_2_pointer(base_type::m_p_root) == NULL);
- return;
- }
-
- const_node_pointer p_nd = next_2_pointer(base_type::m_p_root);
- typename rc_t::const_iterator it = m_rc.end();
- --it;
-
- while (p_nd != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(*it == p_nd);
- const_node_pointer p_next = p_nd->m_p_next_sibling;
- _GLIBCXX_DEBUG_ASSERT(p_next != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_next->m_metadata);
- _GLIBCXX_DEBUG_ASSERT(p_next->m_p_next_sibling == NULL ||
- p_next->m_metadata < p_next->m_p_next_sibling->m_metadata);
-
- --it;
- p_nd = next_2_pointer(next_after_0_pointer(p_nd));
- }
- _GLIBCXX_DEBUG_ASSERT(it + 1 == m_rc.begin());
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::const_node_pointer
-PB_DS_CLASS_C_DEC::
-next_2_pointer(const_node_pointer p_nd)
-{
- if (p_nd == NULL)
- return NULL;
-
- node_pointer p_next = p_nd->m_p_next_sibling;
-
- if (p_next == NULL)
- return NULL;
-
- if (p_nd->m_metadata == p_next->m_metadata)
- return p_nd;
-
- return next_2_pointer(p_next);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::const_node_pointer
-PB_DS_CLASS_C_DEC::
-next_after_0_pointer(const_node_pointer p_nd)
-{
- if (p_nd == NULL)
- return NULL;
-
- node_pointer p_next = p_nd->m_p_next_sibling;
-
- if (p_next == NULL)
- return NULL;
-
- if (p_nd->m_metadata < p_next->m_metadata)
- return p_next;
-
- return next_after_0_pointer(p_next);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
deleted file mode 100644
index 1113ffa66..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,107 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-pop()
-{
- make_binomial_heap();
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
- base_type::pop();
- base_type::find_max();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- base_type::clear();
- m_rc.clear();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-make_binomial_heap()
-{
- node_pointer p_nd = base_type::m_p_root;
- while (p_nd != NULL)
- {
- node_pointer p_next = p_nd->m_p_next_sibling;
- if (p_next == NULL)
- p_nd = p_next;
- else if (p_nd->m_metadata == p_next->m_metadata)
- p_nd = link_with_next_sibling(p_nd);
- else if (p_nd->m_metadata < p_next->m_metadata)
- p_nd = p_next;
-#ifdef _GLIBCXX_DEBUG
- else
- _GLIBCXX_DEBUG_ASSERT(0);
-#endif
- }
-
- m_rc.clear();
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- make_binomial_heap();
- const size_type ersd = base_type::erase_if(pred);
- base_type::find_max();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase(point_iterator it)
-{
- make_binomial_heap();
- base_type::erase(it);
- base_type::find_max();
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
deleted file mode 100644
index aef4b928e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-push(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- make_0_exposed();
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
-
- p_nd->m_p_l_child = p_nd->m_p_prev_or_parent = NULL;
- p_nd->m_metadata = 0;
-
- if (base_type::m_p_max == NULL || Cmp_Fn::operator()(base_type::m_p_max->m_value, r_val))
- base_type::m_p_max = p_nd;
-
- p_nd->m_p_next_sibling = base_type::m_p_root;
-
- if (base_type::m_p_root != NULL)
- base_type::m_p_root->m_p_prev_or_parent = p_nd;
-
- base_type::m_p_root = p_nd;
-
- if (p_nd->m_p_next_sibling != NULL&& p_nd->m_p_next_sibling->m_metadata == 0)
- m_rc.push(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return point_iterator(p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-modify(point_iterator it, const_reference r_new_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- make_binomial_heap();
-
- base_type::modify(it, r_new_val);
-
- base_type::find_max();
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-link_with_next_sibling(node_pointer p_nd)
-{
- node_pointer p_next = p_nd->m_p_next_sibling;
-
- _GLIBCXX_DEBUG_ASSERT(p_next != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_next->m_p_prev_or_parent == p_nd);
-
- if (Cmp_Fn::operator()(p_nd->m_value, p_next->m_value))
- {
- p_next->m_p_prev_or_parent = p_nd->m_p_prev_or_parent;
-
- if (p_next->m_p_prev_or_parent == NULL)
- base_type::m_p_root = p_next;
- else
- p_next->m_p_prev_or_parent->m_p_next_sibling = p_next;
-
- if (base_type::m_p_max == p_nd)
- base_type::m_p_max = p_next;
-
- base_type::make_child_of(p_nd, p_next);
-
- ++p_next->m_metadata;
-
- return p_next;
- }
-
- p_nd->m_p_next_sibling = p_next->m_p_next_sibling;
-
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_nd;
-
- if (base_type::m_p_max == p_next)
- base_type::m_p_max = p_nd;
-
- base_type::make_child_of(p_next, p_nd);
-
- ++p_nd->m_metadata;
-
- return p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-make_0_exposed()
-{
- if (m_rc.empty())
- return;
-
- node_pointer p_nd = m_rc.top();
-
- m_rc.pop();
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata);
-
- node_pointer p_res = link_with_next_sibling(p_nd);
-
- if (p_res->m_p_next_sibling != NULL&& p_res->m_metadata == p_res->m_p_next_sibling->m_metadata)
- m_rc.push(p_res);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
deleted file mode 100644
index 9b70accd9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc.hpp
+++ /dev/null
@@ -1,262 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file rc.hpp
- * Contains a redundant (binary counter).
- */
-
-#ifndef PB_DS_RC_HPP
-#define PB_DS_RC_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Node, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- rc<Node, Allocator>
-
- template<typename Node, class Allocator>
- class rc
- {
- private:
- typedef Allocator allocator_type;
-
- typedef typename allocator_type::size_type size_type;
-
- typedef Node node;
-
- typedef
- typename allocator_type::template rebind<
- node>::other::pointer
- node_pointer;
-
- typedef
- typename allocator_type::template rebind<
- node_pointer>::other::pointer
- entry_pointer;
-
- typedef
- typename allocator_type::template rebind<
- node_pointer>::other::const_pointer
- const_entry_pointer;
-
- enum
- {
- max_entries = sizeof(size_type) << 3
- };
-
- public:
- typedef node_pointer entry;
-
- typedef const_entry_pointer const_iterator;
-
- public:
- rc();
-
- rc(const PB_DS_CLASS_C_DEC& other);
-
- inline void
- swap(PB_DS_CLASS_C_DEC& other);
-
- inline void
- push(entry p_nd);
-
- inline node_pointer
- top() const;
-
- inline void
- pop();
-
- inline bool
- empty() const;
-
- inline size_type
- size() const;
-
- void
- clear();
-
- const const_iterator
- begin() const;
-
- const const_iterator
- end() const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
- node_pointer m_a_entries[max_entries];
-
- size_type m_over_top;
- };
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- rc() : m_over_top(0)
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- PB_DS_CLASS_C_DEC::
- rc(const PB_DS_CLASS_C_DEC& other) : m_over_top(0)
- { _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- swap(PB_DS_CLASS_C_DEC& other)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- const size_type over_top = std::max(m_over_top, other.m_over_top);
-
- for (size_type i = 0; i < over_top; ++i)
- std::swap(m_a_entries[i], other.m_a_entries[i]);
-
- std::swap(m_over_top, other.m_over_top);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- push(entry p_nd)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries);
- m_a_entries[m_over_top++] = p_nd;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline void
- PB_DS_CLASS_C_DEC::
- pop()
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!empty());
- --m_over_top;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::node_pointer
- PB_DS_CLASS_C_DEC::
- top() const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!empty());
- return *(m_a_entries + m_over_top - 1);
- }
-
- PB_DS_CLASS_T_DEC
- inline bool
- PB_DS_CLASS_C_DEC::
- empty() const
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return m_over_top == 0;
- }
-
- PB_DS_CLASS_T_DEC
- inline typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- size() const
- { return m_over_top; }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- clear()
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- m_over_top = 0;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
- PB_DS_CLASS_T_DEC
- const typename PB_DS_CLASS_C_DEC::const_iterator
- PB_DS_CLASS_C_DEC::
- begin() const
- { return& m_a_entries[0]; }
-
- PB_DS_CLASS_T_DEC
- const typename PB_DS_CLASS_C_DEC::const_iterator
- PB_DS_CLASS_C_DEC::
- end() const
- { return& m_a_entries[m_over_top]; }
-
-#ifdef _GLIBCXX_DEBUG
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- assert_valid() const
- { _GLIBCXX_DEBUG_ASSERT(m_over_top < max_entries); }
-#endif
-
-#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- trace() const
- {
- std::cout << "rc" << std::endl;
- for (size_type i = 0; i < m_over_top; ++i)
- std::cerr << m_a_entries[i] << std::endl;
- std::cout << std::endl;
- }
-#endif
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-} // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
deleted file mode 100644
index 762e29b39..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/rc_binomial_heap_.hpp
+++ /dev/null
@@ -1,198 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file rc_binomial_heap_.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-/*
- * Redundant-counter binomial heap.
- */
-
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/binomial_heap_base_/binomial_heap_base_.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/rc.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- rc_binomial_heap_<Value_Type, Cmp_Fn, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- binomial_heap_base_<Value_Type, Cmp_Fn, Allocator>
-
-#define PB_DS_RC_C_DEC \
- rc<typename PB_DS_BASE_C_DEC::node, Allocator>
-
- /**
- * class description = "8y|\|0|\/|i41 h34p 74813">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class rc_binomial_heap_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- typedef typename base_type::node_pointer node_pointer;
-
- typedef typename base_type::const_node_pointer const_node_pointer;
-
- typedef PB_DS_RC_C_DEC rc_t;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef typename base_type::pointer pointer;
-
- typedef typename base_type::const_pointer const_pointer;
-
- typedef typename base_type::reference reference;
-
- typedef typename base_type::const_reference const_reference;
-
- typedef typename base_type::const_point_iterator const_point_iterator;
-
- typedef typename base_type::point_iterator point_iterator;
-
- typedef typename base_type::const_iterator const_iterator;
-
- typedef typename base_type::iterator iterator;
-
- typedef typename base_type::cmp_fn cmp_fn;
-
- typedef typename base_type::allocator_type allocator_type;
-
- public:
-
- rc_binomial_heap_();
-
- rc_binomial_heap_(const Cmp_Fn& r_cmp_fn);
-
- rc_binomial_heap_(const PB_DS_CLASS_C_DEC& other);
-
- ~rc_binomial_heap_();
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- inline point_iterator
- push(const_reference r_val);
-
- void
- modify(point_iterator it, const_reference r_new_val);
-
- inline void
- pop();
-
- void
- erase(point_iterator it);
-
- inline void
- clear();
-
- template<typename Pred>
- size_type
- erase_if(Pred pred);
-
- template<typename Pred>
- void
- split(Pred pred, PB_DS_CLASS_C_DEC& other);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
-#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
-
- inline node_pointer
- link_with_next_sibling(node_pointer p_nd);
-
- void
- make_0_exposed();
-
- void
- make_binomial_heap();
-
-#ifdef _GLIBCXX_DEBUG
- static const_node_pointer
- next_2_pointer(const_node_pointer p_nd);
-
- static const_node_pointer
- next_after_0_pointer(const_node_pointer p_nd);
-#endif
-
- private:
- rc_t m_rc;
- };
-
-#include <ext/pb_ds/detail/rc_binomial_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_BASE_C_DEC
-
-#undef PB_DS_RC_C_DEC
- } // namespace detail
-} // namespace __gnu_pbds
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
deleted file mode 100644
index 26965aec8..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-void
-PB_DS_CLASS_C_DEC::
-split(Pred pred, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- make_binomial_heap();
- other.make_binomial_heap();
-
- base_type::split(pred, other);
-
- base_type::find_max();
- other.find_max();
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- make_binomial_heap();
- other.make_binomial_heap();
-
- base_type::join(other);
-
- base_type::find_max();
- other.find_max();
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
deleted file mode 100644
index 1fb3b8bd4..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/rc_binomial_heap_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,53 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains an implementation for rc_binomial_heap_.
- */
-
-#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- base_type::trace();
-
- m_rc.trace();
-}
-
-#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
deleted file mode 100644
index 94cd515e3..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp
+++ /dev/null
@@ -1,211 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file cc_hash_max_collision_check_resize_trigger_imp.hpp
- * Contains a resize trigger implementation.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-cc_hash_max_collision_check_resize_trigger(float load) :
- m_load(load),
- m_size(0),
- m_num_col(0),
- m_max_col(0),
- m_resize_needed(false)
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_start()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_collision()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_end()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_start()
-{ m_num_col = 0; }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_collision()
-{ ++m_num_col; }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_end()
-{ calc_resize_needed(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_start()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_collision()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_end()
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_inserted(size_type)
-{ }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erased(size_type)
-{ m_resize_needed = true; }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_cleared()
-{ m_resize_needed = false; }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_resize_needed() const
-{ return m_resize_needed; }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_grow_needed(size_type /*size*/, size_type /*num_used_e*/) const
-{ return m_num_col >= m_max_col; }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_resized(size_type new_size)
-{
- m_size = new_size;
-
-#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
- std::cerr << "chmccrt::notify_resized "
- << static_cast<unsigned long>(new_size) << std::endl;
-#endif
-
- calc_max_num_coll();
- calc_resize_needed();
- m_num_col = 0;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-calc_max_num_coll()
-{
- // max_col <-- \sqrt{2 load \ln( 2 m \ln( m ) ) }
- const double ln_arg = 2 * m_size * std::log(double(m_size));
- m_max_col = size_type(std::ceil(std::sqrt(2 * m_load * std::log(ln_arg))));
-
-#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
- std::cerr << "chmccrt::calc_max_num_coll "
- << static_cast<unsigned long>(m_size) << " "
- << static_cast<unsigned long>(m_max_col) << std::endl;
-#endif
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_externally_resized(size_type new_size)
-{ notify_resized(new_size); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_load, other.m_load);
- std::swap(m_size, other.m_size);
- std::swap(m_num_col, other.m_num_col);
- std::swap(m_max_col, other.m_max_col);
- std::swap(m_resize_needed, other.m_resize_needed);
-}
-
-PB_DS_CLASS_T_DEC
-inline float
-PB_DS_CLASS_C_DEC::
-get_load() const
-{
- PB_DS_STATIC_ASSERT(access, external_load_access);
- return m_load;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-calc_resize_needed()
-{ m_resize_needed = m_resize_needed || m_num_col >= m_max_col; }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-set_load(float load)
-{
- PB_DS_STATIC_ASSERT(access, external_load_access);
- m_load = load;
- calc_max_num_coll();
- calc_resize_needed();
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
deleted file mode 100644
index b58f2ec9d..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_exponential_size_policy_imp.hpp
- * Contains a resize size policy implementation.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-hash_exponential_size_policy(size_type start_size, size_type grow_factor) :
- m_start_size(start_size),
- m_grow_factor(grow_factor)
-{ }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- std::swap(m_start_size, other.m_start_size);
- std::swap(m_grow_factor, other.m_grow_factor);
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_nearest_larger_size(size_type size) const
-{
- size_type ret = m_start_size;
- while (ret <= size)
- {
- const size_type next_ret = ret* m_grow_factor;
- if (next_ret < ret)
- __throw_insert_error();
- ret = next_ret;
- }
- return ret;
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_nearest_smaller_size(size_type size) const
-{
- size_type ret = m_start_size;
- while (true)
- {
- const size_type next_ret = ret* m_grow_factor;
- if (next_ret < ret)
- __throw_resize_error();
- if (next_ret >= size)
- return (ret);
- ret = next_ret;
- }
- return ret;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
deleted file mode 100644
index 3403b0976..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp
+++ /dev/null
@@ -1,289 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_load_check_resize_trigger_imp.hpp
- * Contains a resize trigger implementation.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-hash_load_check_resize_trigger(float load_min, float load_max)
-: m_load_min(load_min), m_load_max(load_max), m_next_shrink_size(0),
- m_next_grow_size(0), m_resize_needed(false)
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_start()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_collision()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_end()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_start()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_collision()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_end()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_start()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_collision()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_end()
-{ _GLIBCXX_DEBUG_ONLY(assert_valid();) }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_inserted(size_type num_entries)
-{
- m_resize_needed = (num_entries >= m_next_grow_size);
- size_base::set_size(num_entries);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erased(size_type num_entries)
-{
- size_base::set_size(num_entries);
- m_resize_needed = num_entries <= m_next_shrink_size;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_resize_needed() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return m_resize_needed;
-}
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_grow_needed(size_type /*size*/, size_type num_entries) const
-{
- _GLIBCXX_DEBUG_ASSERT(m_resize_needed);
- return num_entries >= m_next_grow_size;
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~hash_load_check_resize_trigger() { }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_resized(size_type new_size)
-{
- m_resize_needed = false;
- m_next_grow_size = size_type(m_load_max * new_size - 1);
- m_next_shrink_size = size_type(m_load_min * new_size);
-
-#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
- std::cerr << "hlcrt::notify_resized " <<
- static_cast<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(m_next_grow_size) << " " << std::endl;
-#endif
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_externally_resized(size_type new_size)
-{
- m_resize_needed = false;
- size_type new_grow_size = size_type(m_load_max * new_size - 1);
- size_type new_shrink_size = size_type(m_load_min * new_size);
- if (new_grow_size >= m_next_grow_size)
- {
- _GLIBCXX_DEBUG_ASSERT(new_shrink_size > m_next_shrink_size);
- m_next_grow_size = new_grow_size;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
-#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
- std::cerr << "hlcrt::notify_externally_resized1 " <<
- static_cast<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(m_next_grow_size) << " " << std::endl;
-#endif
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(new_shrink_size <= m_next_shrink_size);
- m_next_shrink_size = new_shrink_size;
-
-#ifdef PB_DS_HT_MAP_RESIZE_TRACE_
- std::cerr << "hlcrt::notify_externally_resized2 " <<
- static_cast<unsigned long>(new_size) << " " <<
- static_cast<unsigned long>(m_load_min) << " " <<
- static_cast<unsigned long>(m_load_max) << " " <<
- static_cast<unsigned long>(m_next_shrink_size) << " " <<
- static_cast<unsigned long>(m_next_grow_size) << " " << std::endl;
-#endif
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_cleared()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- size_base::set_size(0);
- m_resize_needed = (0 < m_next_shrink_size);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- size_base::swap(other);
- std::swap(m_load_min, other.m_load_min);
- std::swap(m_load_max, other.m_load_max);
- std::swap(m_resize_needed, other.m_resize_needed);
- std::swap(m_next_grow_size, other.m_next_grow_size);
- std::swap(m_next_shrink_size, other.m_next_shrink_size);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-inline std::pair<float, float>
-PB_DS_CLASS_C_DEC::
-get_loads() const
-{
- PB_DS_STATIC_ASSERT(access, external_load_access);
- return std::make_pair(m_load_min, m_load_max);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-set_loads(std::pair<float, float> load_pair)
-{
- PB_DS_STATIC_ASSERT(access, external_load_access);
- const float old_load_min = m_load_min;
- const float old_load_max = m_load_max;
- const size_type old_next_shrink_size = m_next_shrink_size;
- const size_type old_next_grow_size = m_next_grow_size;
- const bool old_resize_needed = m_resize_needed;
-
- __try
- {
- m_load_min = load_pair.first;
- m_load_max = load_pair.second;
- do_resize(static_cast<size_type>(size_base::get_size() / ((m_load_min + m_load_max) / 2)));
- }
- __catch(...)
- {
- m_load_min = old_load_min;
- m_load_max = old_load_max;
- m_next_shrink_size = old_next_shrink_size;
- m_next_grow_size = old_next_grow_size;
- m_resize_needed = old_resize_needed;
- __throw_exception_again;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-do_resize(size_type)
-{ std::abort(); }
-
-#ifdef _GLIBCXX_DEBUG
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- _GLIBCXX_DEBUG_ASSERT(m_load_max > m_load_min);
- _GLIBCXX_DEBUG_ASSERT(m_next_grow_size >= m_next_shrink_size);
-}
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
deleted file mode 100644
index c29b3d5be..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp
+++ /dev/null
@@ -1,94 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_load_check_resize_trigger_size_base.hpp
- * Contains an base holding size for some resize policies.
- */
-
-#ifndef PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP
-#define PB_DS_HASH_LOAD_CHECK_RESIZE_TRIGGER_SIZE_BASE_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- // Primary template.
- template<typename Size_Type, bool Hold_Size>
- class hash_load_check_resize_trigger_size_base;
-
- // Specializations.
- template<typename Size_Type>
- class hash_load_check_resize_trigger_size_base<Size_Type, true>
- {
- protected:
- typedef Size_Type size_type;
-
- hash_load_check_resize_trigger_size_base(): m_size(0)
- { }
-
- inline void
- swap(hash_load_check_resize_trigger_size_base& other)
- { std::swap(m_size, other.m_size); }
-
- inline void
- set_size(size_type size)
- { m_size = size; }
-
- inline size_type
- get_size() const
- { return m_size; }
-
- private:
- size_type m_size;
- };
-
- template<typename Size_Type>
- class hash_load_check_resize_trigger_size_base<Size_Type, false>
- {
- protected:
- typedef Size_Type size_type;
-
- protected:
- inline void
- swap(hash_load_check_resize_trigger_size_base& other) { }
-
- inline void
- set_size(size_type size) { }
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
deleted file mode 100644
index a28f5ede5..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp
+++ /dev/null
@@ -1,161 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_prime_size_policy_imp.hpp
- * Contains a resize size policy implementation.
- */
-
-#pragma GCC system_header
-
-namespace detail
-{
- enum
- {
- num_distinct_sizes_32_bit = 30,
- num_distinct_sizes_64_bit = 62,
- num_distinct_sizes = sizeof(std::size_t) != 8 ?
- num_distinct_sizes_32_bit : num_distinct_sizes_64_bit,
- };
-
- // Originally taken from the SGI implementation; acknowledged in the docs.
- // Further modified (for 64 bits) from tr1's hashtable.
- static const std::size_t g_a_sizes[num_distinct_sizes_64_bit] =
- {
- /* 0 */ 5ul,
- /* 1 */ 11ul,
- /* 2 */ 23ul,
- /* 3 */ 47ul,
- /* 4 */ 97ul,
- /* 5 */ 199ul,
- /* 6 */ 409ul,
- /* 7 */ 823ul,
- /* 8 */ 1741ul,
- /* 9 */ 3469ul,
- /* 10 */ 6949ul,
- /* 11 */ 14033ul,
- /* 12 */ 28411ul,
- /* 13 */ 57557ul,
- /* 14 */ 116731ul,
- /* 15 */ 236897ul,
- /* 16 */ 480881ul,
- /* 17 */ 976369ul,
- /* 18 */ 1982627ul,
- /* 19 */ 4026031ul,
- /* 20 */ 8175383ul,
- /* 21 */ 16601593ul,
- /* 22 */ 33712729ul,
- /* 23 */ 68460391ul,
- /* 24 */ 139022417ul,
- /* 25 */ 282312799ul,
- /* 26 */ 573292817ul,
- /* 27 */ 1164186217ul,
- /* 28 */ 2364114217ul,
- /* 29 */ 4294967291ul,
- /* 30 */ (std::size_t)8589934583ull,
- /* 31 */ (std::size_t)17179869143ull,
- /* 32 */ (std::size_t)34359738337ull,
- /* 33 */ (std::size_t)68719476731ull,
- /* 34 */ (std::size_t)137438953447ull,
- /* 35 */ (std::size_t)274877906899ull,
- /* 36 */ (std::size_t)549755813881ull,
- /* 37 */ (std::size_t)1099511627689ull,
- /* 38 */ (std::size_t)2199023255531ull,
- /* 39 */ (std::size_t)4398046511093ull,
- /* 40 */ (std::size_t)8796093022151ull,
- /* 41 */ (std::size_t)17592186044399ull,
- /* 42 */ (std::size_t)35184372088777ull,
- /* 43 */ (std::size_t)70368744177643ull,
- /* 44 */ (std::size_t)140737488355213ull,
- /* 45 */ (std::size_t)281474976710597ull,
- /* 46 */ (std::size_t)562949953421231ull,
- /* 47 */ (std::size_t)1125899906842597ull,
- /* 48 */ (std::size_t)2251799813685119ull,
- /* 49 */ (std::size_t)4503599627370449ull,
- /* 50 */ (std::size_t)9007199254740881ull,
- /* 51 */ (std::size_t)18014398509481951ull,
- /* 52 */ (std::size_t)36028797018963913ull,
- /* 53 */ (std::size_t)72057594037927931ull,
- /* 54 */ (std::size_t)144115188075855859ull,
- /* 55 */ (std::size_t)288230376151711717ull,
- /* 56 */ (std::size_t)576460752303423433ull,
- /* 57 */ (std::size_t)1152921504606846883ull,
- /* 58 */ (std::size_t)2305843009213693951ull,
- /* 59 */ (std::size_t)4611686018427387847ull,
- /* 60 */ (std::size_t)9223372036854775783ull,
- /* 61 */ (std::size_t)18446744073709551557ull,
- };
-
-} // namespace detail
-
-PB_DS_CLASS_T_DEC
-inline
-PB_DS_CLASS_C_DEC::
-hash_prime_size_policy(size_type n) : m_start_size(n)
-{ m_start_size = get_nearest_larger_size(n); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{ std::swap(m_start_size, other.m_start_size); }
-
-PB_DS_CLASS_T_DEC
-inline PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_nearest_larger_size(size_type n) const
-{
- const std::size_t* const p_upper = std::upper_bound(detail::g_a_sizes,
- detail::g_a_sizes + detail::num_distinct_sizes, n);
-
- if (p_upper == detail::g_a_sizes + detail::num_distinct_sizes)
- __throw_resize_error();
- return *p_upper;
-}
-
-PB_DS_CLASS_T_DEC
-inline PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_nearest_smaller_size(size_type n) const
-{
- const size_t* p_lower = std::lower_bound(detail::g_a_sizes,
- detail::g_a_sizes + detail::num_distinct_sizes, n);
-
- if (*p_lower >= n && p_lower != detail::g_a_sizes)
- --p_lower;
- if (*p_lower < m_start_size)
- return m_start_size;
- return *p_lower;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
deleted file mode 100644
index 39cf7dc9e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp
+++ /dev/null
@@ -1,249 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_standard_resize_policy_imp.hpp
- * Contains a resize policy implementation.
- */
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-hash_standard_resize_policy()
-: m_size(Size_Policy::get_nearest_larger_size(1))
-{ trigger_policy_base::notify_externally_resized(m_size); }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-hash_standard_resize_policy(const Size_Policy& r_size_policy)
-: Size_Policy(r_size_policy), m_size(Size_Policy::get_nearest_larger_size(1))
-{ trigger_policy_base::notify_externally_resized(m_size); }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-hash_standard_resize_policy(const Size_Policy& r_size_policy,
- const Trigger_Policy& r_trigger_policy)
-: Size_Policy(r_size_policy), Trigger_Policy(r_trigger_policy),
- m_size(Size_Policy::get_nearest_larger_size(1))
-{ trigger_policy_base::notify_externally_resized(m_size); }
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~hash_standard_resize_policy()
-{ }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- trigger_policy_base::swap(other);
- size_policy_base::swap(other);
- std::swap(m_size, other.m_size);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_start()
-{ trigger_policy_base::notify_find_search_start(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_collision()
-{ trigger_policy_base::notify_find_search_collision(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_find_search_end()
-{ trigger_policy_base::notify_find_search_end(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_start()
-{ trigger_policy_base::notify_insert_search_start(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_collision()
-{ trigger_policy_base::notify_insert_search_collision(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_insert_search_end()
-{ trigger_policy_base::notify_insert_search_end(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_start()
-{ trigger_policy_base::notify_erase_search_start(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_collision()
-{ trigger_policy_base::notify_erase_search_collision(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erase_search_end()
-{ trigger_policy_base::notify_erase_search_end(); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_inserted(size_type num_e)
-{ trigger_policy_base::notify_inserted(num_e); }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-notify_erased(size_type num_e)
-{ trigger_policy_base::notify_erased(num_e); }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_cleared()
-{ trigger_policy_base::notify_cleared(); }
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-is_resize_needed() const
-{ return trigger_policy_base::is_resize_needed(); }
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_new_size(size_type size, size_type num_used_e) const
-{
- if (trigger_policy_base::is_grow_needed(size, num_used_e))
- return size_policy_base::get_nearest_larger_size(size);
- return size_policy_base::get_nearest_smaller_size(size);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-notify_resized(size_type new_size)
-{
- trigger_policy_base::notify_resized(new_size);
- m_size = new_size;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-get_actual_size() const
-{
- PB_DS_STATIC_ASSERT(access, external_size_access);
- return m_size;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-resize(size_type new_size)
-{
- PB_DS_STATIC_ASSERT(access, external_size_access);
- size_type actual_size = size_policy_base::get_nearest_larger_size(1);
- while (actual_size < new_size)
- {
- const size_type pot = size_policy_base::get_nearest_larger_size(actual_size);
-
- if (pot == actual_size && pot < new_size)
- __throw_resize_error();
- actual_size = pot;
- }
-
- if (actual_size > 0)
- --actual_size;
-
- const size_type old_size = m_size;
- __try
- {
- do_resize(actual_size - 1);
- }
- __catch(insert_error& )
- {
- m_size = old_size;
- __throw_resize_error();
- }
- __catch(...)
- {
- m_size = old_size;
- __throw_exception_again;
- }
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-do_resize(size_type)
-{
- // Do nothing
-}
-
-PB_DS_CLASS_T_DEC
-Trigger_Policy&
-PB_DS_CLASS_C_DEC::
-get_trigger_policy()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Trigger_Policy&
-PB_DS_CLASS_C_DEC::
-get_trigger_policy() const
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-Size_Policy&
-PB_DS_CLASS_C_DEC::
-get_size_policy()
-{ return *this; }
-
-PB_DS_CLASS_T_DEC
-const Size_Policy&
-PB_DS_CLASS_C_DEC::
-get_size_policy() const
-{ return *this; }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
deleted file mode 100644
index ed70b9511..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_policy.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_resize_policy.hpp
- * Contains a sample resize policy for hash tables.
- */
-
-#ifndef PB_DS_SAMPLE_RESIZE_POLICY_HPP
-#define PB_DS_SAMPLE_RESIZE_POLICY_HPP
-
-// A sample resize policy.
-class sample_resize_policy
-{
-public:
-
- // Size type.
- typedef size_t size_type;
-
- // Default constructor.
- sample_resize_policy();
-
- // Copy constructor.
- sample_range_hashing(const sample_resize_policy& other);
-
- // Swaps content.
- inline void
- swap(sample_resize_policy& other);
-
-protected:
-
- // Notifies a search started.
- inline void
- notify_insert_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_insert_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_insert_search_end();
-
- // Notifies a search started.
- inline void
- notify_find_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_find_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_find_search_end();
-
- // Notifies a search started.
- inline void
- notify_erase_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_erase_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_erase_search_end();
-
- // Notifies an element was inserted.
- inline void
- notify_inserted(size_type num_e);
-
- // Notifies an element was erased.
- inline void
- notify_erased(size_type num_e);
-
- // Notifies the table was cleared.
- void
- notify_cleared();
-
- // Notifies the table was resized to new_size.
- void
- notify_resized(size_type new_size);
-
- // Queries whether a resize is needed.
- inline bool
- is_resize_needed() const;
-
- // Queries what the new size should be.
- size_type
- get_new_size(size_type size, size_type num_used_e) const;
-};
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
deleted file mode 100644
index a27dd9427..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_resize_trigger.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_resize_trigger.hpp
- * Contains a sample resize trigger policy class.
- */
-
-#ifndef PB_DS_SAMPLE_RESIZE_TRIGGER_HPP
-#define PB_DS_SAMPLE_RESIZE_TRIGGER_HPP
-
-// A sample resize trigger policy.
-class sample_resize_trigger
-{
-public:
-
- // Size type.
- typedef size_t size_type;
-
- // Default constructor.
- sample_resize_trigger();
-
- // Copy constructor.
- sample_range_hashing(const sample_resize_trigger& other);
-
- // Swaps content.
- inline void
- swap(sample_resize_trigger& other);
-
-protected:
-
- // Notifies a search started.
- inline void
- notify_insert_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_insert_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_insert_search_end();
-
- // Notifies a search started.
- inline void
- notify_find_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_find_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_find_search_end();
-
- // Notifies a search started.
- inline void
- notify_erase_search_start();
-
- // Notifies a search encountered a collision.
- inline void
- notify_erase_search_collision();
-
- // Notifies a search ended.
- inline void
- notify_erase_search_end();
-
- // Notifies an element was inserted. the total number of entries in
- // the table is num_entries.
- inline void
- notify_inserted(size_type num_entries);
-
- // Notifies an element was erased.
- inline void
- notify_erased(size_type num_entries);
-
- // Notifies the table was cleared.
- void
- notify_cleared();
-
- // Notifies the table was resized as a result of this object's
- // signifying that a resize is needed.
- void
- notify_resized(size_type new_size);
-
- // Notifies the table was resized externally.
- void
- notify_externally_resized(size_type new_size);
-
- // Queries whether a resize is needed.
- inline bool
- is_resize_needed() const;
-
- // Queries whether a grow is needed.
- inline bool
- is_grow_needed(size_type size, size_type num_entries) const;
-
-private:
-
- // Resizes to new_size.
- virtual void
- do_resize(size_type new_size);
-};
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
deleted file mode 100644
index 1f2d3a9c1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/resize_policy/sample_size_policy.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_size_policy.hpp
- * Contains a sample size resize-policy.
- */
-
-#ifndef PB_DS_SAMPLE_SIZE_POLICY_HPP
-#define PB_DS_SAMPLE_SIZE_POLICY_HPP
-
-// A sample size policy.
-class sample_size_policy
-{
-public:
-
- // Size type.
- typedef size_t size_type;
-
- // Default constructor.
- sample_size_policy();
-
- // Copy constructor.
- sample_range_hashing(const sample_size_policy& other);
-
- // Swaps content.
- inline void
- swap(sample_size_policy& other);
-
-protected:
-
- // Given a __size size, returns a __size that is larger.
- inline size_type
- get_nearest_larger_size(size_type size) const;
-
- // Given a __size size, returns a __size that is smaller.
- inline size_type
- get_nearest_smaller_size(size_type size) const;
-};
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 222589532..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,102 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- insert(*(first_it++));
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME()
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn) :
- base_type(r_cmp_fn)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const Cmp_Fn& r_cmp_fn, const node_update& r_node_update) :
- base_type(r_cmp_fn, r_node_update)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC& other) :
- base_type(other)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- base_type::swap(other);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{ base_type::m_p_head->m_special = true; }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
deleted file mode 100644
index 084e25d26..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,74 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- base_type::assert_valid();
- const node_pointer p_head = base_type::m_p_head;
- assert_special_imp(p_head);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_special_imp(const node_pointer p_nd) const
-{
- if (p_nd == NULL)
- return;
-
- if (p_nd == base_type::m_p_head)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_special);
- assert_special_imp(p_nd->m_p_parent);
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(!p_nd->m_special);
- assert_special_imp(p_nd->m_p_left);
- assert_special_imp(p_nd->m_p_right);
-}
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
deleted file mode 100644
index 508f586d7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,157 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline bool
-PB_DS_CLASS_C_DEC::
-erase(const_key_reference r_key)
-{
- point_iterator it = find(r_key);
- if (it == base_type::end())
- return false;
- erase(it);
- return true;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-erase(iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- if (it == base_type::end())
- return it;
- iterator ret_it = it;
- ++ret_it;
- erase_node(it.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::reverse_iterator
-PB_DS_CLASS_C_DEC::
-erase(reverse_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- if (it.m_p_nd == base_type::m_p_head)
- return (it);
- reverse_iterator ret_it = it;
- ++ret_it;
- erase_node(it.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ret_it;
-}
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- size_type num_ersd = 0;
- iterator it = base_type::begin();
- while (it != base_type::end())
- {
- if (pred(*it))
- {
- ++num_ersd;
- it = erase(it);
- }
- else
- ++it;
- }
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return num_ersd;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase_node(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- splay(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent);
-
- node_pointer p_l = p_nd->m_p_left;
- node_pointer p_r = p_nd->m_p_right;
-
- base_type::update_min_max_for_erased_node(p_nd);
- base_type::actual_erase_node(p_nd);
- if (p_r == NULL)
- {
- base_type::m_p_head->m_p_parent = p_l;
- if (p_l != NULL)
- p_l->m_p_parent = base_type::m_p_head;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- return;
- }
-
- node_pointer p_target_r = leftmost(p_r);
- _GLIBCXX_DEBUG_ASSERT(p_target_r != NULL);
- p_r->m_p_parent = base_type::m_p_head;
- base_type::m_p_head->m_p_parent = p_r;
- splay(p_target_r);
-
- _GLIBCXX_DEBUG_ONLY(p_target_r->m_p_left = NULL);
- _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_parent == this->m_p_head);
- _GLIBCXX_DEBUG_ASSERT(this->m_p_head->m_p_parent == p_target_r);
-
- p_target_r->m_p_left = p_l;
- if (p_l != NULL)
- p_l->m_p_parent = p_target_r;
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- apply_update(p_target_r, (node_update* )this);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-leftmost(node_pointer p_nd)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- while (p_nd->m_p_left != NULL)
- p_nd = p_nd->m_p_left;
- return p_nd;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
deleted file mode 100644
index 182425a8f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key)
-{
- node_pointer p_found = find_imp(r_key);
- if (p_found != base_type::m_p_head)
- splay(p_found);
- return point_iterator(p_found);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_point_iterator
-PB_DS_CLASS_C_DEC::
-find(const_key_reference r_key) const
-{
- const node_pointer p_found = find_imp(r_key);
- if (p_found != base_type::m_p_head)
- const_cast<PB_DS_CLASS_C_DEC* >(this)->splay(p_found);
- return point_iterator(p_found);
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-find_imp(const_key_reference r_key)
-{
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
- node_pointer p_nd = base_type::m_p_head->m_p_parent;
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
- {
- if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
- return p_nd;
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
- return base_type::m_p_head;
-}
-
-PB_DS_CLASS_T_DEC
-inline const typename PB_DS_CLASS_C_DEC::node_pointer
-PB_DS_CLASS_C_DEC::
-find_imp(const_key_reference r_key) const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- node_pointer p_nd = base_type::m_p_head->m_p_parent;
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), r_key))
- {
- if (!Cmp_Fn::operator()(r_key, PB_DS_V2F(p_nd->m_value)))
- return p_nd;
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
- return base_type::m_p_head;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
deleted file mode 100644
index 636b9ab25..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/info_fn_imps.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file info_fn_imps.hpp
- * Contains an implementation.
- */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
deleted file mode 100644
index e9ae987b0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,93 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert(const_reference r_value)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- std::pair<point_iterator, bool> ins_pair = insert_leaf_imp(r_value);
- ins_pair.first.m_p_nd->m_special = false;
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- splay(ins_pair.first.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- return ins_pair;
-}
-
-PB_DS_CLASS_T_DEC
-inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
-PB_DS_CLASS_C_DEC::
-insert_leaf_imp(const_reference r_value)
-{
- _GLIBCXX_DEBUG_ONLY(base_type::structure_only_assert_valid();)
- if (base_type::m_size == 0)
- return std::make_pair(base_type::insert_imp_empty(r_value), true);
-
- node_pointer p_nd = base_type::m_p_head->m_p_parent;
- node_pointer p_pot = base_type::m_p_head;
-
- while (p_nd != NULL)
- if (!Cmp_Fn::operator()(PB_DS_V2F(p_nd->m_value), PB_DS_V2F(r_value)))
- {
- if (!Cmp_Fn::operator()(PB_DS_V2F(r_value), PB_DS_V2F(p_nd->m_value)))
- {
- return std::make_pair(point_iterator(p_nd), false);
- }
- p_pot = p_nd;
- p_nd = p_nd->m_p_left;
- }
- else
- p_nd = p_nd->m_p_right;
-
- if (p_pot == base_type::m_p_head)
- return std::make_pair(base_type::insert_leaf_new(r_value, base_type::m_p_head->m_p_right, false), true);
-
- _GLIBCXX_DEBUG_ONLY(base_type::check_key_does_not_exist(PB_DS_V2F(r_value)));
-
- p_nd = p_pot->m_p_left;
- if (p_nd == NULL)
- return (std::make_pair(base_type::insert_leaf_new(r_value, p_pot, true), true));
-
- while (p_nd->m_p_right != NULL)
- p_nd = p_nd->m_p_right;
-
- return std::make_pair(insert_leaf_new(r_value, p_nd, false), true);
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
deleted file mode 100644
index fbf398d04..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/node.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node.hpp
- * Contains an implementation struct for splay_tree_'s node.
- */
-
-#ifndef PB_DS_SPLAY_TREE_NODE_HPP
-#define PB_DS_SPLAY_TREE_NODE_HPP
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Value_Type, class Metadata, class Allocator>
- struct splay_tree_node_
- {
- public:
- typedef Value_Type value_type;
- typedef Metadata metadata_type;
-
- typedef
- typename Allocator::template rebind<
- splay_tree_node_<Value_Type, Metadata, Allocator> >::other::pointer
- node_pointer;
-
- typedef
- typename Allocator::template rebind<metadata_type>::other::reference
- metadata_reference;
-
- typedef
- typename Allocator::template rebind<metadata_type>::other::const_reference
- const_metadata_reference;
-
-#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
- void
- trace() const
- { std::cout << PB_DS_V2F(m_value) << "(" << m_metadata << ")"; }
-#endif
-
- inline bool
- special() const
- { return m_special; }
-
- inline const_metadata_reference
- get_metadata() const
- { return m_metadata; }
-
- inline metadata_reference
- get_metadata()
- { return m_metadata; }
-
- value_type m_value;
- bool m_special;
- node_pointer m_p_left;
- node_pointer m_p_right;
- node_pointer m_p_parent;
- metadata_type m_metadata;
- };
-
- template<typename Value_Type, typename Allocator>
- struct splay_tree_node_<Value_Type, null_node_metadata, Allocator>
- {
- public:
- typedef Value_Type value_type;
- typedef null_node_metadata metadata_type;
-
- typedef
- typename Allocator::template rebind<
- splay_tree_node_<Value_Type, null_node_metadata, Allocator> >::other::pointer
- node_pointer;
-
- inline bool
- special() const
- { return m_special; }
-
-#ifdef PB_DS_BIN_SEARCH_TREE_TRACE_
- void
- trace() const
- { std::cout << PB_DS_V2F(m_value); }
-#endif
-
- node_pointer m_p_left;
- node_pointer m_p_right;
- node_pointer m_p_parent;
- value_type m_value;
- bool m_special;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
deleted file mode 100644
index e4f3556a5..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp
+++ /dev/null
@@ -1,283 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file splay_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-splay(node_pointer p_nd)
-{
- while (p_nd->m_p_parent != base_type::m_p_head)
- {
-#ifdef _GLIBCXX_DEBUG
- {
- node_pointer p_head = base_type::m_p_head;
- assert_special_imp(p_head);
- }
-#endif
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
-
- if (p_nd->m_p_parent->m_p_parent == base_type::m_p_head)
- {
- base_type::rotate_parent(p_nd);
- _GLIBCXX_DEBUG_ASSERT(p_nd == this->m_p_head->m_p_parent);
- }
- else
- {
- const node_pointer p_parent = p_nd->m_p_parent;
- const node_pointer p_grandparent = p_parent->m_p_parent;
-
-#ifdef _GLIBCXX_DEBUG
- const size_type total =
- base_type::recursive_count(p_grandparent);
- _GLIBCXX_DEBUG_ASSERT(total >= 3);
-#endif
-
- if (p_parent->m_p_left == p_nd &&
- p_grandparent->m_p_right == p_parent)
- splay_zig_zag_left(p_nd, p_parent, p_grandparent);
- else if (p_parent->m_p_right == p_nd &&
- p_grandparent->m_p_left == p_parent)
- splay_zig_zag_right(p_nd, p_parent, p_grandparent);
- else if (p_parent->m_p_left == p_nd &&
- p_grandparent->m_p_left == p_parent)
- splay_zig_zig_left(p_nd, p_parent, p_grandparent);
- else
- splay_zig_zig_right(p_nd, p_parent, p_grandparent);
- _GLIBCXX_DEBUG_ASSERT(total ==this->recursive_count(p_nd));
- }
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zig_zag_left(node_pointer p_nd, node_pointer p_parent,
- node_pointer p_grandparent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
-
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd &&
- p_grandparent->m_p_right == p_parent);
-
- splay_zz_start(p_nd, p_parent, p_grandparent);
-
- node_pointer p_b = p_nd->m_p_right;
- node_pointer p_c = p_nd->m_p_left;
-
- p_nd->m_p_right = p_parent;
- p_parent->m_p_parent = p_nd;
-
- p_nd->m_p_left = p_grandparent;
- p_grandparent->m_p_parent = p_nd;
-
- p_parent->m_p_left = p_b;
- if (p_b != NULL)
- p_b->m_p_parent = p_parent;
-
- p_grandparent->m_p_right = p_c;
- if (p_c != NULL)
- p_c->m_p_parent = p_grandparent;
-
- splay_zz_end(p_nd, p_parent, p_grandparent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zig_zag_right(node_pointer p_nd, node_pointer p_parent,
- node_pointer p_grandparent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
-
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd &&
- p_grandparent->m_p_left == p_parent);
-
- splay_zz_start(p_nd, p_parent, p_grandparent);
-
- node_pointer p_b = p_nd->m_p_left;
- node_pointer p_c = p_nd->m_p_right;
-
- p_nd->m_p_left = p_parent;
- p_parent->m_p_parent = p_nd;
-
- p_nd->m_p_right = p_grandparent;
- p_grandparent->m_p_parent = p_nd;
-
- p_parent->m_p_right = p_b;
- if (p_b != NULL)
- p_b->m_p_parent = p_parent;
-
- p_grandparent->m_p_left = p_c;
- if (p_c != NULL)
- p_c->m_p_parent = p_grandparent;
-
- splay_zz_end(p_nd, p_parent, p_grandparent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zig_zig_left(node_pointer p_nd, node_pointer p_parent,
- node_pointer p_grandparent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
-
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_left == p_nd &&
- p_nd->m_p_parent->m_p_parent->m_p_left == p_nd->m_p_parent);
-
- splay_zz_start(p_nd, p_parent, p_grandparent);
-
- node_pointer p_b = p_nd->m_p_right;
- node_pointer p_c = p_parent->m_p_right;
-
- p_nd->m_p_right = p_parent;
- p_parent->m_p_parent = p_nd;
-
- p_parent->m_p_right = p_grandparent;
- p_grandparent->m_p_parent = p_parent;
-
- p_parent->m_p_left = p_b;
- if (p_b != NULL)
- p_b->m_p_parent = p_parent;
-
- p_grandparent->m_p_left = p_c;
- if (p_c != NULL)
- p_c->m_p_parent = p_grandparent;
-
- splay_zz_end(p_nd, p_parent, p_grandparent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zig_zig_right(node_pointer p_nd, node_pointer p_parent,
- node_pointer p_grandparent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_parent == p_nd->m_p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_grandparent == p_parent->m_p_parent);
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_grandparent);)
- _GLIBCXX_DEBUG_ASSERT(p_parent->m_p_right == p_nd &&
- p_nd->m_p_parent->m_p_parent->m_p_right == p_nd->m_p_parent);
-
- splay_zz_start(p_nd, p_parent, p_grandparent);
-
- node_pointer p_b = p_nd->m_p_left;
- node_pointer p_c = p_parent->m_p_left;
-
- p_nd->m_p_left = p_parent;
- p_parent->m_p_parent = p_nd;
-
- p_parent->m_p_left = p_grandparent;
- p_grandparent->m_p_parent = p_parent;
-
- p_parent->m_p_right = p_b;
- if (p_b != NULL)
- p_b->m_p_parent = p_parent;
-
- p_grandparent->m_p_right = p_c;
- if (p_c != NULL)
- p_c->m_p_parent = p_grandparent;
-
- base_type::update_to_top(p_grandparent, (node_update* )this);
- splay_zz_end(p_nd, p_parent, p_grandparent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zz_start(node_pointer p_nd,
-#ifdef _GLIBCXX_DEBUG
- node_pointer p_parent,
-#else
- node_pointer /*p_parent*/,
-#endif
- node_pointer p_grandparent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_parent != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_grandparent != NULL);
-
- const bool grandparent_head = p_grandparent->m_p_parent == base_type::m_p_head;
-
- if (grandparent_head)
- {
- base_type::m_p_head->m_p_parent = base_type::m_p_head->m_p_parent;
- p_nd->m_p_parent = base_type::m_p_head;
- return;
- }
-
- node_pointer p_greatgrandparent = p_grandparent->m_p_parent;
-
- p_nd->m_p_parent = p_greatgrandparent;
-
- if (p_grandparent == p_greatgrandparent->m_p_left)
- p_greatgrandparent->m_p_left = p_nd;
- else
- p_greatgrandparent->m_p_right = p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-splay_zz_end(node_pointer p_nd, node_pointer p_parent,
- node_pointer p_grandparent)
-{
- if (p_nd->m_p_parent == base_type::m_p_head)
- base_type::m_p_head->m_p_parent = p_nd;
-
- apply_update(p_grandparent, (node_update* )this);
- apply_update(p_parent, (node_update* )this);
- apply_update(p_nd, (node_update* )this);
-
- _GLIBCXX_DEBUG_ONLY(base_type::assert_node_consistent(p_nd);)
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
deleted file mode 100644
index 959893ec7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/splay_tree_.hpp
+++ /dev/null
@@ -1,298 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file splay_tree_.hpp
- * Contains an implementation class for splay_tree_.
- */
-/*
- * This implementation uses an idea from the SGI STL (using a "header" node
- * which is needed for efficient iteration). Following is the SGI STL
- * copyright.
- *
- * Copyright (c) 1996,1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- */
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
-#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_TRUE_INDICATOR
-#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
-#endif
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#ifndef PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
-#define PB_DS_BIN_SEARCH_TREE_HPP__DATA_FALSE_INDICATOR
-#include <ext/pb_ds/detail/bin_search_tree_/bin_search_tree_.hpp>
-#endif
-#endif
-
-#include <utility>
-#include <vector>
-#include <assert.h>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-#define PB_DS_CLASS_T_DEC \
- template<typename Key, typename Mapped, typename Cmp_Fn, \
- typename Node_And_It_Traits, typename Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_CLASS_NAME splay_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_CLASS_NAME splay_tree_no_data_
-#endif
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_BASE_CLASS_NAME bin_search_tree_data_
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_BASE_CLASS_NAME bin_search_tree_no_data_
-#endif
-
-#define PB_DS_CLASS_C_DEC \
- PB_DS_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- PB_DS_BASE_CLASS_NAME<Key, Mapped, Cmp_Fn, Node_And_It_Traits, Allocator>
-
-#ifdef PB_DS_DATA_TRUE_INDICATOR
-#define PB_DS_V2F(X) (X).first
-#define PB_DS_V2S(X) (X).second
-#define PB_DS_EP2VP(X)& ((X)->m_value)
-#endif
-
-#ifdef PB_DS_DATA_FALSE_INDICATOR
-#define PB_DS_V2F(X) (X)
-#define PB_DS_V2S(X) Mapped_Data()
-#define PB_DS_EP2VP(X)& ((X)->m_value.first)
-#endif
-
- // $p14y 7r33 7481.
- template<typename Key, typename Mapped, typename Cmp_Fn,
- typename Node_And_It_Traits, typename Allocator>
- class PB_DS_CLASS_NAME : public PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
- typedef typename base_type::node_pointer node_pointer;
-
- public:
- typedef Allocator allocator_type;
- typedef typename Allocator::size_type size_type;
- typedef typename Allocator::difference_type difference_type;
- typedef Cmp_Fn cmp_fn;
- typedef typename base_type::key_type key_type;
- typedef typename base_type::key_pointer key_pointer;
- typedef typename base_type::const_key_pointer const_key_pointer;
- typedef typename base_type::key_reference key_reference;
- typedef typename base_type::const_key_reference const_key_reference;
- typedef typename base_type::mapped_type mapped_type;
- typedef typename base_type::mapped_pointer mapped_pointer;
- typedef typename base_type::const_mapped_pointer const_mapped_pointer;
- typedef typename base_type::mapped_reference mapped_reference;
- typedef typename base_type::const_mapped_reference const_mapped_reference;
- typedef typename base_type::value_type value_type;
- typedef typename base_type::pointer pointer;
- typedef typename base_type::const_pointer const_pointer;
- typedef typename base_type::reference reference;
- typedef typename base_type::const_reference const_reference;
- typedef typename base_type::point_iterator point_iterator;
- typedef typename base_type::const_iterator const_point_iterator;
- typedef typename base_type::iterator iterator;
- typedef typename base_type::const_iterator const_iterator;
- typedef typename base_type::reverse_iterator reverse_iterator;
- typedef typename base_type::const_reverse_iterator const_reverse_iterator;
- typedef typename base_type::node_update node_update;
-
- PB_DS_CLASS_NAME();
-
- PB_DS_CLASS_NAME(const Cmp_Fn&);
-
- PB_DS_CLASS_NAME(const Cmp_Fn&, const node_update&);
-
- PB_DS_CLASS_NAME(const PB_DS_CLASS_C_DEC&);
-
- void
- swap(PB_DS_CLASS_C_DEC&);
-
- template<typename It>
- void
- copy_from_range(It, It);
-
- void
- initialize();
-
- inline std::pair<point_iterator, bool>
- insert(const_reference r_value);
-
- inline mapped_reference
- operator[](const_key_reference r_key)
- {
-#ifdef PB_DS_DATA_TRUE_INDICATOR
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- std::pair<point_iterator, bool> ins_pair =
- insert_leaf_imp(value_type(r_key, mapped_type()));
-
- ins_pair.first.m_p_nd->m_special = false;
- _GLIBCXX_DEBUG_ONLY(base_type::assert_valid());
- splay(ins_pair.first.m_p_nd);
- _GLIBCXX_DEBUG_ONLY(PB_DS_CLASS_C_DEC::assert_valid();)
- return ins_pair.first.m_p_nd->m_value.second;
-#else
- insert(r_key);
- return base_type::s_null_mapped;
-#endif
- }
-
- inline point_iterator
- find(const_key_reference);
-
- inline const_point_iterator
- find(const_key_reference) const;
-
- inline bool
- erase(const_key_reference);
-
- inline iterator
- erase(iterator it);
-
- inline reverse_iterator
- erase(reverse_iterator);
-
- template<typename Pred>
- inline size_type
- erase_if(Pred);
-
- void
- join(PB_DS_CLASS_C_DEC&);
-
- void
- split(const_key_reference, PB_DS_CLASS_C_DEC&);
-
- private:
- inline std::pair<point_iterator, bool>
- insert_leaf_imp(const_reference);
-
- inline node_pointer
- find_imp(const_key_reference);
-
- inline const node_pointer
- find_imp(const_key_reference) const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_special_imp(const node_pointer) const;
-#endif
-
- void
- splay(node_pointer);
-
- inline void
- splay_zig_zag_left(node_pointer, node_pointer, node_pointer);
-
- inline void
- splay_zig_zag_right(node_pointer, node_pointer, node_pointer);
-
- inline void
- splay_zig_zig_left(node_pointer, node_pointer, node_pointer);
-
- inline void
- splay_zig_zig_right(node_pointer, node_pointer, node_pointer);
-
- inline void
- splay_zz_start(node_pointer, node_pointer, node_pointer);
-
- inline void
- splay_zz_end(node_pointer, node_pointer, node_pointer);
-
- inline node_pointer
- leftmost(node_pointer);
-
- void
- erase_node(node_pointer);
- };
-
-#include <ext/pb_ds/detail/splay_tree_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/splay_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_NAME
-#undef PB_DS_BASE_CLASS_NAME
-#undef PB_DS_BASE_C_DEC
-#undef PB_DS_V2F
-#undef PB_DS_EP2VP
-#undef PB_DS_V2S
- } // namespace detail
-} // namespace __gnu_pbds
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
deleted file mode 100644
index 7f0b2cb20..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation class for splay_tree_.
- */
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- if (base_type::join_prep(other) == false)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- return;
- }
-
- node_pointer p_target_r = other.leftmost(other.m_p_head);
- _GLIBCXX_DEBUG_ASSERT(p_target_r != NULL);
- other.splay(p_target_r);
-
- _GLIBCXX_DEBUG_ASSERT(p_target_r == other.m_p_head->m_p_parent);
- _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left == NULL);
-
- p_target_r->m_p_left = base_type::m_p_head->m_p_parent;
-
- _GLIBCXX_DEBUG_ASSERT(p_target_r->m_p_left != NULL);
- p_target_r->m_p_left->m_p_parent = p_target_r;
-
- base_type::m_p_head->m_p_parent = p_target_r;
- p_target_r->m_p_parent = base_type::m_p_head;
- apply_update(p_target_r, (node_update* )this);
-
- base_type::join_finish(other);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-split(const_key_reference r_key, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
-
- if (base_type::split_prep(r_key, other) == false)
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
- return;
- }
-
- node_pointer p_upper_bound = upper_bound(r_key).m_p_nd;
- _GLIBCXX_DEBUG_ASSERT(p_upper_bound != NULL);
-
- splay(p_upper_bound);
- _GLIBCXX_DEBUG_ASSERT(p_upper_bound->m_p_parent == this->m_p_head);
-
- node_pointer p_new_root = p_upper_bound->m_p_left;
- _GLIBCXX_DEBUG_ASSERT(p_new_root != NULL);
-
- base_type::m_p_head->m_p_parent = p_new_root;
- p_new_root->m_p_parent = base_type::m_p_head;
- other.m_p_head->m_p_parent = p_upper_bound;
- p_upper_bound->m_p_parent = other.m_p_head;
- p_upper_bound->m_p_left = NULL;
- apply_update(p_upper_bound, (node_update* )this);
- base_type::split_finish(other);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid());
- _GLIBCXX_DEBUG_ONLY(other.assert_valid());
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
deleted file mode 100644
index cfedc35c8..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/splay_tree_/traits.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file traits.hpp
- * Contains an implementation for splay_tree_.
- */
-
-#ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
-#define PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
-
-#include <ext/pb_ds/detail/splay_tree_/node.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Key,
- typename Mapped,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- splay_tree_tag,
- Allocator> : public bin_search_tree_traits<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- splay_tree_node_<
- typename types_traits<
- Key,
- Mapped,
- Allocator,
- false>::value_type,
- typename tree_node_metadata_selector<
- Key,
- Mapped,
- Cmp_Fn,
- Node_Update,
- Allocator>::type,
- Allocator>,
- Allocator>
- { };
-
- template<typename Key,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_traits<Key, null_mapped_type, Cmp_Fn, Node_Update,
- splay_tree_tag, Allocator>
- : public bin_search_tree_traits<Key, null_mapped_type, Cmp_Fn,
- Node_Update,
- splay_tree_node_<typename types_traits<Key, null_mapped_type, Allocator, false>::value_type,
- typename tree_node_metadata_selector<
- Key,
- null_mapped_type,
- Cmp_Fn,
- Node_Update,
- Allocator>::type,
- Allocator>,
- Allocator>
- { };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_SPLAY_TREE_NODE_AND_IT_TRAITS_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
deleted file mode 100644
index cfbfbb072..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/standard_policies.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file standard_policies.hpp
- * Contains standard policies for containers.
- */
-
-#ifndef PB_DS_STANDARD_POLICIES_HPP
-#define PB_DS_STANDARD_POLICIES_HPP
-
-#include <memory>
-#include <ext/pb_ds/hash_policy.hpp>
-#include <ext/pb_ds/list_update_policy.hpp>
-#include <ext/pb_ds/tree_policy.hpp>
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-#include <ext/pb_ds/trie_policy.hpp>
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <tr1/functional>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key>
- struct default_hash_fn
- {
- typedef std::tr1::hash<Key> type;
- };
-
- template<typename Key>
- struct default_eq_fn
- {
- typedef std::equal_to<Key> type;
- };
-
- enum
- {
- default_store_hash = false
- };
-
- struct default_comb_hash_fn
- {
- typedef __gnu_pbds::direct_mask_range_hashing<> type;
- };
-
- template<typename Comb_Hash_Fn>
- struct default_resize_policy
- {
- private:
- typedef typename Comb_Hash_Fn::size_type size_type;
-
- typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
- typedef is_same<default_fn, Comb_Hash_Fn> same_type;
- typedef __gnu_pbds::hash_exponential_size_policy<size_type> iftrue;
- typedef __gnu_pbds::hash_prime_size_policy iffalse;
- typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
- typedef typename cond_type::__type size_policy_type;
-
- typedef __gnu_pbds::hash_load_check_resize_trigger<false, size_type> trigger;
-
- public:
- typedef __gnu_pbds::hash_standard_resize_policy<size_policy_type, trigger, false, size_type> type;
- };
-
- struct default_update_policy
- {
- typedef __gnu_pbds::move_to_front_lu_policy<> type;
- };
-
- template<typename Comb_Probe_Fn>
- struct default_probe_fn
- {
- private:
- typedef typename Comb_Probe_Fn::size_type size_type;
-
- typedef __gnu_pbds::direct_mask_range_hashing<size_type> default_fn;
- typedef is_same<default_fn, Comb_Probe_Fn> same_type;
- typedef __gnu_pbds::linear_probe_fn<size_type> iftrue;
- typedef __gnu_pbds::quadratic_probe_fn<size_type> iffalse;
- typedef __conditional_type<same_type::value, iftrue, iffalse> cond_type;
-
- public:
- typedef typename cond_type::__type type;
- };
-
- template<typename Key>
- struct default_trie_e_access_traits;
-
- template<typename Char, class Char_Traits>
- struct default_trie_e_access_traits<std::basic_string<Char, Char_Traits, std::allocator<char> > >
- {
- private:
- typedef std::basic_string<Char, Char_Traits, std::allocator<char> > string_type;
-
- public:
- typedef __gnu_pbds::string_trie_e_access_traits<string_type> type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_STANDARD_POLICIES_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
deleted file mode 100644
index 4d2c45ce0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file constructors_destructor_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename It>
-void
-PB_DS_CLASS_C_DEC::
-copy_from_range(It first_it, It last_it)
-{
- while (first_it != last_it)
- push(*(first_it++));
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-thin_heap_() :
- m_p_max(NULL)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-thin_heap_(const Cmp_Fn& r_cmp_fn) :
- PB_DS_BASE_C_DEC(r_cmp_fn),
- m_p_max(NULL)
-{
- initialize();
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-thin_heap_(const PB_DS_CLASS_C_DEC& other) :
- PB_DS_BASE_C_DEC(other)
-{
- initialize();
- m_p_max = base_type::m_p_root;
- for (node_pointer p_nd = base_type::m_p_root; p_nd != NULL; p_nd = p_nd->m_p_next_sibling)
- if (Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value))
- m_p_max = p_nd;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-swap(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- base_type::swap(other);
- std::swap(m_p_max, other.m_p_max);
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~thin_heap_()
-{ }
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-initialize()
-{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast<node_pointer>(NULL)); }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
deleted file mode 100644
index f7abe3527..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp
+++ /dev/null
@@ -1,112 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file debug_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-#ifdef _GLIBCXX_DEBUG
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_valid() const
-{
- base_type::assert_valid();
- assert_node_consistent(base_type::m_p_root, true);
- assert_max();
- assert_aux_null();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_aux_null() const
-{
- for (size_type i = 0; i < max_rank; ++i)
- _GLIBCXX_DEBUG_ASSERT(m_a_aux[i] == NULL);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_max() const
-{
- if (m_p_max == NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::empty());
- return;
- }
-
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
- _GLIBCXX_DEBUG_ASSERT(base_type::parent(m_p_max) == NULL);
- _GLIBCXX_DEBUG_ASSERT(m_p_max->m_p_prev_or_parent == NULL);
- for (const_iterator it = base_type::begin(); it != base_type::end(); ++it)
- _GLIBCXX_DEBUG_ASSERT(!Cmp_Fn::operator()(m_p_max->m_value, it.m_p_nd->m_value));
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-assert_node_consistent(const_node_pointer p_nd, bool root) const
-{
- base_type::assert_node_consistent(p_nd, root);
- if (p_nd == NULL)
- return;
-
- assert_node_consistent(p_nd->m_p_next_sibling, root);
- assert_node_consistent(p_nd->m_p_l_child, false);
- if (!root)
- {
- if (p_nd->m_metadata == 0)
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_next_sibling == NULL);
- else
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_nd->m_p_next_sibling->m_metadata + 1);
- }
-
- if (p_nd->m_p_l_child != NULL)
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_p_l_child->m_metadata + 1 == base_type::degree(p_nd));
-
- const bool unmarked_valid =(p_nd->m_p_l_child == NULL&& p_nd->m_metadata == 0) ||(p_nd->m_p_l_child != NULL&& p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 1);
-
- const bool marked_valid =(p_nd->m_p_l_child == NULL&& p_nd->m_metadata == 1) ||(p_nd->m_p_l_child != NULL&& p_nd->m_metadata == p_nd->m_p_l_child->m_metadata + 2);
-
- _GLIBCXX_DEBUG_ASSERT(unmarked_valid || marked_valid);
- if (root)
- _GLIBCXX_DEBUG_ASSERT(unmarked_valid);
-}
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
deleted file mode 100644
index 69afcd39f..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp
+++ /dev/null
@@ -1,296 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file erase_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-pop()
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL);
-
- node_pointer p_nd = m_p_max;
-
- remove_max_node();
-
- base_type::actual_erase_node(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-remove_max_node()
-{
- to_aux_except_max();
-
- make_from_aux();
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-to_aux_except_max()
-{
- node_pointer p_add = base_type::m_p_root;
-
- while (p_add != m_p_max)
- {
- node_pointer p_next_add = p_add->m_p_next_sibling;
-
- add_to_aux(p_add);
-
- p_add = p_next_add;
- }
-
- p_add = m_p_max->m_p_l_child;
-
- while (p_add != NULL)
- {
- node_pointer p_next_add = p_add->m_p_next_sibling;
-
- p_add->m_metadata = p_add->m_p_l_child == NULL?
- 0 :
- p_add->m_p_l_child->m_metadata + 1;
-
- add_to_aux(p_add);
-
- p_add = p_next_add;
- }
-
- p_add = m_p_max->m_p_next_sibling;
-
- while (p_add != NULL)
- {
- node_pointer p_next_add = p_add->m_p_next_sibling;
-
- add_to_aux(p_add);
-
- p_add = p_next_add;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-add_to_aux(node_pointer p_nd)
-{
- size_type r = p_nd->m_metadata;
-
- while (m_a_aux[r] != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound());
-
- if (Cmp_Fn::operator()(m_a_aux[r]->m_value, p_nd->m_value))
- make_child_of(m_a_aux[r], p_nd);
- else
- {
- make_child_of(p_nd, m_a_aux[r]);
-
- p_nd = m_a_aux[r];
- }
-
- m_a_aux[r] = NULL;
-
- ++r;
- }
-
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata < rank_bound());
-
- m_a_aux[r] = p_nd;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-make_child_of(node_pointer p_nd, node_pointer p_new_parent)
-{
- _GLIBCXX_DEBUG_ASSERT(p_nd->m_metadata == p_new_parent->m_metadata);
- _GLIBCXX_DEBUG_ASSERT(m_a_aux[p_nd->m_metadata] == p_nd ||
- m_a_aux[p_nd->m_metadata] == p_new_parent);
-
- ++p_new_parent->m_metadata;
-
- base_type::make_child_of(p_nd, p_new_parent);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-make_from_aux()
-{
- base_type::m_p_root = m_p_max = NULL;
-
- const size_type rnk_bnd = rank_bound();
-
- size_type i = 0;
-
- while (i < rnk_bnd)
- {
- if (m_a_aux[i] != NULL)
- {
- make_root_and_link(m_a_aux[i]);
-
- m_a_aux[i] = NULL;
- }
-
- ++i;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_aux_null();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-remove_node(node_pointer p_nd)
-{
- node_pointer p_parent = p_nd;
- while (base_type::parent(p_parent) != NULL)
- p_parent = base_type::parent(p_parent);
-
- base_type::bubble_to_top(p_nd);
-
- m_p_max = p_nd;
-
- node_pointer p_fix = base_type::m_p_root;
- while (p_fix != NULL&& p_fix->m_p_next_sibling != p_parent)
- p_fix = p_fix->m_p_next_sibling;
-
- if (p_fix != NULL)
- p_fix->m_p_next_sibling = p_nd;
-
- remove_max_node();
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-clear()
-{
- base_type::clear();
-
- m_p_max = NULL;
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-erase(point_iterator it)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- node_pointer p_nd = it.m_p_nd;
-
- remove_node(p_nd);
-
- base_type::actual_erase_node(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-erase_if(Pred pred)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return 0;
- }
-
- base_type::to_linked_list();
-
- node_pointer p_out = base_type::prune(pred);
-
- size_type ersd = 0;
-
- while (p_out != NULL)
- {
- ++ersd;
-
- node_pointer p_next = p_out->m_p_next_sibling;
-
- base_type::actual_erase_node(p_out);
-
- p_out = p_next;
- }
-
- node_pointer p_cur = base_type::m_p_root;
-
- m_p_max = base_type::m_p_root = NULL;
-
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
-
- make_root_and_link(p_cur);
-
- p_cur = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return ersd;
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-rank_bound()
-{
- const std::size_t* const p_upper =
- std::upper_bound( g_a_rank_bounds, g_a_rank_bounds + num_distinct_rank_bounds, base_type::m_size);
-
- if (p_upper == g_a_rank_bounds + num_distinct_rank_bounds)
- return max_rank;
-
- return (p_upper - g_a_rank_bounds);
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
deleted file mode 100644
index 52407e6d0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file find_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_reference
-PB_DS_CLASS_C_DEC::
-top() const
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ASSERT(!base_type::empty());
-
- _GLIBCXX_DEBUG_ASSERT(m_p_max != NULL);
- return m_p_max->m_value;
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
deleted file mode 100644
index 7a6952fda..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp
+++ /dev/null
@@ -1,326 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file insert_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::point_iterator
-PB_DS_CLASS_C_DEC::
-push(const_reference r_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- node_pointer p_nd = base_type::get_new_node_for_insert(r_val);
-
- p_nd->m_metadata = 0;
-
- p_nd->m_p_prev_or_parent = p_nd->m_p_l_child = NULL;
-
- if (base_type::m_p_root == NULL)
- {
- p_nd->m_p_next_sibling = NULL;
-
- m_p_max = base_type::m_p_root = p_nd;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return point_iterator(p_nd);
- }
-
- p_nd->m_p_next_sibling = base_type::m_p_root;
-
- base_type::m_p_root->m_p_prev_or_parent = NULL;
-
- base_type::m_p_root = p_nd;
-
- update_max(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return point_iterator(p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-make_root(node_pointer p_nd)
-{
- p_nd->m_metadata =
- p_nd->m_p_l_child == NULL?
- 0 :
- 1 + p_nd->m_p_l_child->m_metadata;
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-make_root_and_link(node_pointer p_nd)
-{
- make_root(p_nd);
-
- p_nd->m_p_prev_or_parent = NULL;
-
- p_nd->m_p_next_sibling = base_type::m_p_root;
-
- if (base_type::m_p_root != NULL)
- base_type::m_p_root->m_p_prev_or_parent = NULL;
-
- base_type::m_p_root = p_nd;
-
- update_max(p_nd);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix(node_pointer p_y)
-{
- while (true)
- {
- if (p_y->m_p_prev_or_parent == NULL)
- {
- fix_root(p_y);
-
- return;
- }
- else if (p_y->m_metadata == 1&& p_y->m_p_next_sibling == NULL)
- {
- if (p_y->m_p_l_child != NULL)
- {
- fix_sibling_rank_1_unmarked(p_y);
-
- return;
- }
-
- fix_sibling_rank_1_marked(p_y);
-
- p_y = p_y->m_p_prev_or_parent;
- }
- else if (p_y->m_metadata > p_y->m_p_next_sibling->m_metadata + 1)
- {
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child != NULL);
-
- if (p_y->m_metadata != p_y->m_p_l_child->m_metadata + 2)
- {
- fix_sibling_general_unmarked(p_y);
-
- return;
- }
-
- fix_sibling_general_marked(p_y);
-
- p_y = p_y->m_p_prev_or_parent;
- }
- else if ((p_y->m_p_l_child == NULL&&
- p_y->m_metadata == 2) ||(p_y->m_p_l_child != NULL&&
- p_y->m_metadata == p_y->m_p_l_child->m_metadata + 3))
- {
- node_pointer p_z = p_y->m_p_prev_or_parent;
-
- fix_child(p_y);
-
- p_y = p_z;
- }
- else
- return;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_root(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent == NULL);
-
- make_root(p_y);
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, true);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_sibling_rank_1_unmarked(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL);
-
- _GLIBCXX_DEBUG_ONLY(node_pointer p_w = p_y->m_p_l_child;)
- _GLIBCXX_DEBUG_ASSERT(p_w != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling == NULL);
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_next_sibling == NULL);
-
- p_y->m_p_next_sibling = p_y->m_p_l_child;
-
- p_y->m_p_next_sibling->m_p_prev_or_parent = p_y;
-
- p_y->m_p_l_child = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_sibling_rank_1_marked(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_l_child == NULL);
-
- p_y->m_metadata = 0;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_sibling_general_unmarked(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL);
-
- node_pointer p_w = p_y->m_p_l_child;
- _GLIBCXX_DEBUG_ASSERT(p_w != NULL);
- _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != NULL);
-
- p_y->m_p_l_child = p_w->m_p_next_sibling;
- p_w->m_p_next_sibling->m_p_prev_or_parent = p_y;
-
- p_w->m_p_next_sibling = p_y->m_p_next_sibling;
- _GLIBCXX_DEBUG_ASSERT(p_w->m_p_next_sibling != NULL);
- p_w->m_p_next_sibling->m_p_prev_or_parent = p_w;
-
- p_y->m_p_next_sibling = p_w;
- p_w->m_p_prev_or_parent = p_y;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_sibling_general_marked(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL);
-
- --p_y->m_metadata;
-
- _GLIBCXX_DEBUG_ONLY(assert_node_consistent(p_y, false);)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-fix_child(node_pointer p_y)
-{
- _GLIBCXX_DEBUG_ASSERT(p_y->m_p_prev_or_parent != NULL);
-
- if (p_y->m_p_next_sibling != NULL)
- p_y->m_p_next_sibling->m_p_prev_or_parent = p_y->m_p_prev_or_parent;
-
- if (p_y->m_p_prev_or_parent->m_p_l_child == p_y)
- p_y->m_p_prev_or_parent->m_p_l_child = p_y->m_p_next_sibling;
- else
- p_y->m_p_prev_or_parent->m_p_next_sibling = p_y->m_p_next_sibling;
-
- make_root_and_link(p_y);
-}
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-modify(point_iterator it, const_reference r_new_val)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- node_pointer p_nd = it.m_p_nd;
-
- _GLIBCXX_DEBUG_ASSERT(p_nd != NULL);
-
- const bool smaller = Cmp_Fn::operator()(r_new_val, p_nd->m_value);
-
- p_nd->m_value = r_new_val;
-
- if (smaller)
- {
- remove_node(p_nd);
-
- p_nd->m_p_l_child = NULL;
-
- make_root_and_link(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return;
- }
-
- if (p_nd->m_p_prev_or_parent == NULL)
- {
- update_max(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
-
- return;
- }
-
- node_pointer p_y = p_nd->m_p_prev_or_parent;
- _GLIBCXX_DEBUG_ASSERT(p_y != NULL);
-
- if (p_nd->m_p_next_sibling != NULL)
- p_nd->m_p_next_sibling->m_p_prev_or_parent = p_y;
-
- if (p_y->m_p_l_child == p_nd)
- p_y->m_p_l_child = p_nd->m_p_next_sibling;
- else
- p_y->m_p_next_sibling = p_nd->m_p_next_sibling;
-
- fix(p_y);
-
- make_root_and_link(p_nd);
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-update_max(node_pointer p_nd)
-{
- if (m_p_max == NULL || Cmp_Fn::operator()(m_p_max->m_value, p_nd->m_value))
- m_p_max = p_nd;
-}
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
deleted file mode 100644
index 6acb7bd75..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file split_join_fn_imps.hpp
- * Contains an implementation for thin_heap_.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Pred>
-void
-PB_DS_CLASS_C_DEC::
-split(Pred pred, PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- other.clear();
-
- if (base_type::empty())
- {
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- return;
- }
-
- base_type::to_linked_list();
-
- node_pointer p_out = base_type::prune(pred);
-
- while (p_out != NULL)
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_size > 0);
- --base_type::m_size;
-
- ++other.m_size;
-
- node_pointer p_next = p_out->m_p_next_sibling;
-
- other.make_root_and_link(p_out);
-
- p_out = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- node_pointer p_cur = base_type::m_p_root;
-
- m_p_max = NULL;
-
- base_type::m_p_root = NULL;
-
- while (p_cur != NULL)
- {
- node_pointer p_next = p_cur->m_p_next_sibling;
-
- make_root_and_link(p_cur);
-
- p_cur = p_next;
- }
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-join(PB_DS_CLASS_C_DEC& other)
-{
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
-
- node_pointer p_other = other.m_p_root;
-
- while (p_other != NULL)
- {
- node_pointer p_next = p_other->m_p_next_sibling;
-
- make_root_and_link(p_other);
-
- p_other = p_next;
- }
-
- base_type::m_size += other.m_size;
-
- other.m_p_root = NULL;
- other.m_size = 0;
- other.m_p_max = NULL;
-
- _GLIBCXX_DEBUG_ONLY(assert_valid();)
- _GLIBCXX_DEBUG_ONLY(other.assert_valid();)
- }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
deleted file mode 100644
index 88fa04b3c..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/thin_heap_.hpp
+++ /dev/null
@@ -1,351 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file thin_heap_.hpp
- * Contains an implementation class for a thin heap.
- */
-
-#ifndef PB_DS_THIN_HEAP_HPP
-#define PB_DS_THIN_HEAP_HPP
-
-/*
- * Thin heaps.
- * Tarjan and Kaplan.
- */
-
-#include <algorithm>
-#include <ext/pb_ds/detail/cond_dealtor.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/left_child_next_sibling_heap_.hpp>
-#include <ext/pb_ds/detail/left_child_next_sibling_heap_/null_metadata.hpp>
-#include <debug/debug.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Value_Type, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- thin_heap_<Value_Type, Cmp_Fn, Allocator>
-
-#ifdef _GLIBCXX_DEBUG
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
- typename Allocator::size_type, Allocator, true>
-#else
-#define PB_DS_BASE_C_DEC \
- left_child_next_sibling_heap_<Value_Type, Cmp_Fn, \
- typename Allocator::size_type, Allocator>
-#endif
-
- /**
- * class description = "t|-|i|\| h34p">
- **/
- template<typename Value_Type, class Cmp_Fn, class Allocator>
- class thin_heap_ : public PB_DS_BASE_C_DEC
- {
-
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- protected:
- typedef typename base_type::node node;
-
- typedef typename base_type::node_pointer node_pointer;
-
- typedef typename base_type::const_node_pointer const_node_pointer;
-
- public:
-
- typedef typename Allocator::size_type size_type;
-
- typedef typename Allocator::difference_type difference_type;
-
- typedef Value_Type value_type;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::pointer
- pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_pointer
- const_pointer;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::reference
- reference;
-
- typedef
- typename Allocator::template rebind<
- value_type>::other::const_reference
- const_reference;
-
- typedef
- typename PB_DS_BASE_C_DEC::const_point_iterator
- const_point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::point_iterator point_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::const_iterator const_iterator;
-
- typedef typename PB_DS_BASE_C_DEC::iterator iterator;
-
- typedef Cmp_Fn cmp_fn;
-
- typedef Allocator allocator_type;
-
- public:
-
- inline point_iterator
- push(const_reference r_val);
-
- void
- modify(point_iterator it, const_reference r_new_val);
-
- inline const_reference
- top() const;
-
- void
- pop();
-
- void
- erase(point_iterator it);
-
- inline void
- clear();
-
- template<typename Pred>
- size_type
- erase_if(Pred pred);
-
- template<typename Pred>
- void
- split(Pred pred, PB_DS_CLASS_C_DEC& other);
-
- void
- join(PB_DS_CLASS_C_DEC& other);
-
- protected:
-
- thin_heap_();
-
- thin_heap_(const Cmp_Fn& r_cmp_fn);
-
- thin_heap_(const PB_DS_CLASS_C_DEC& other);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- ~thin_heap_();
-
- template<typename It>
- void
- copy_from_range(It first_it, It last_it);
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-
- void
- assert_max() const;
-#endif
-
-#ifdef PB_DS_THIN_HEAP_TRACE_
- void
- trace() const;
-#endif
-
- private:
- enum
- {
- max_rank = (sizeof(size_type) << 4) + 2
- };
-
- private:
-
- void
- initialize();
-
- inline void
- update_max(node_pointer p_nd);
-
- inline void
- fix(node_pointer p_nd);
-
- inline void
- fix_root(node_pointer p_y);
-
- inline void
- fix_sibling_rank_1_unmarked(node_pointer p_y);
-
- inline void
- fix_sibling_rank_1_marked(node_pointer p_y);
-
- inline void
- fix_sibling_general_unmarked(node_pointer p_y);
-
- inline void
- fix_sibling_general_marked(node_pointer p_y);
-
- inline void
- fix_child(node_pointer p_y);
-
- inline static void
- make_root(node_pointer p_nd);
-
- inline void
- make_root_and_link(node_pointer p_nd);
-
- inline void
- remove_max_node();
-
- void
- to_aux_except_max();
-
- inline void
- add_to_aux(node_pointer p_nd);
-
- inline void
- make_from_aux();
-
- inline size_type
- rank_bound();
-
- inline void
- make_child_of(node_pointer p_nd, node_pointer p_new_parent);
-
- inline void
- remove_node(node_pointer p_nd);
-
- inline node_pointer
- join(node_pointer p_lhs, node_pointer p_rhs) const;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_node_consistent(const_node_pointer p_nd, bool root) const;
-
- void
- assert_aux_null() const;
-#endif
-
- private:
- node_pointer m_p_max;
-
- node_pointer m_a_aux[max_rank];
- };
-
- enum
- {
- num_distinct_rank_bounds = 48
- };
-
- // Taken from the SGI implementation; acknowledged in the docs.
- static const std::size_t g_a_rank_bounds[num_distinct_rank_bounds] =
- {
- /* Dealing cards... */
- /* 0 */ 0ul,
- /* 1 */ 1ul,
- /* 2 */ 1ul,
- /* 3 */ 2ul,
- /* 4 */ 4ul,
- /* 5 */ 6ul,
- /* 6 */ 11ul,
- /* 7 */ 17ul,
- /* 8 */ 29ul,
- /* 9 */ 46ul,
- /* 10 */ 76ul,
- /* 11 */ 122ul,
- /* 12 */ 199ul,
- /* 13 */ 321ul,
- /* 14 */ 521ul,
- /* 15 */ 842ul,
- /* 16 */ 1364ul,
- /* 17 */ 2206ul,
- /* 18 */ 3571ul,
- /* 19 */ 5777ul,
- /* 20 */ 9349ul,
- /* 21 */ 15126ul,
- /* 22 */ 24476ul,
- /* 23 */ 39602ul,
- /* 24 */ 64079ul,
- /* 25 */ 103681ul,
- /* 26 */ 167761ul,
- /* 27 */ 271442ul,
- /* 28 */ 439204ul,
- /* 29 */ 710646ul,
- /* 30 */ 1149851ul,
- /* 31 */ 1860497ul,
- /* 32 */ 3010349ul,
- /* 33 */ 4870846ul,
- /* 34 */ 7881196ul,
- /* 35 */ 12752042ul,
- /* 36 */ 20633239ul,
- /* 37 */ 33385282ul,
- /* 38 */ 54018521ul,
- /* 39 */ 87403803ul,
- /* 40 */ 141422324ul,
- /* 41 */ 228826127ul,
- /* 42 */ 370248451ul,
- /* 43 */ 599074578ul,
- /* 44 */ 969323029ul,
- /* 45 */ 1568397607ul,
- /* 46 */ 2537720636ul,
- /* 47 */ 4106118243ul
- /* Pot's good, let's play */
- };
-
-#include <ext/pb_ds/detail/thin_heap_/constructors_destructor_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/debug_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/find_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/insert_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/erase_fn_imps.hpp>
-#include <ext/pb_ds/detail/thin_heap_/split_join_fn_imps.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_BASE_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
deleted file mode 100644
index fc309d5c1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/thin_heap_/trace_fn_imps.hpp
+++ /dev/null
@@ -1,55 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trace_fn_imps.hpp
- * Contains an implementation class for left_child_next_sibling_heap_.
- */
-
-#ifdef PB_DS_THIN_HEAP_TRACE_
-
-PB_DS_CLASS_T_DEC
-void
-PB_DS_CLASS_C_DEC::
-trace() const
-{
- std::cerr << std::endl;
-
- std::cerr << "m_p_max " << m_p_max << std::endl;
-
- base_type::trace();
-}
-
-#endif // #ifdef PB_DS_THIN_HEAP_TRACE_
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
deleted file mode 100644
index c182886ee..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/node_metadata_selector.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_metadata_selector.hpp
- * Contains an implementation class for trees.
- */
-
-#ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
-#define PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
-
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Node_Update, bool Null>
- struct tree_metadata_helper
- {
- typedef typename Node_Update::metadata_type type;
- };
-
- template<typename Node_Update>
- struct tree_metadata_helper<
- Node_Update,
- true>
- {
- typedef null_node_metadata type;
- };
-
- template<typename Key,
- typename Data,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Const_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct tree_node_metadata_selector
- {
- private:
- typedef
- dumconst_node_iterator<
- Key,
- Data,
- Allocator>
- dumconst_node_it;
-
- enum
- {
- null_update =
- is_same<
- Node_Update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator>,
- null_tree_node_update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator> >::value
- };
-
- public:
- typedef
- typename tree_metadata_helper<
- Node_Update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator>,
- null_update>::type
- type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_TREE_NODE_METADATA_SELECTOR_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
deleted file mode 100644
index 006a3eb04..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/null_node_update_imp.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file null_node_update_imp.hpp
- * Contains an implementation of null_node_update.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Const_Node_Iterator_,
- typename Node_Iterator_,
- class Cmp_Fn_,
- typename Allocator_>
-inline void
-PB_DS_CLASS_C_DEC::
-swap(null_tree_node_update< Const_Node_Iterator_, Node_Iterator_, Cmp_Fn_, Allocator_>& /*other*/)
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
deleted file mode 100644
index 1d33767a2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp
+++ /dev/null
@@ -1,141 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file order_statistics_imp.hpp
- * Contains forward declarations for order_statistics_key
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-find_by_order(size_type order)
-{
- node_iterator it = node_begin();
-
- node_iterator end_it = node_end();
-
- while (it != end_it)
- {
- node_iterator l_it = it.get_l_child();
-
- const size_type o = (l_it == end_it)?
- 0 :
- l_it.get_metadata();
-
- if (order == o)
- return (*it);
- else if (order < o)
- it = l_it;
- else
- {
- order -= o + 1;
-
- it = it.get_r_child();
- }
- }
-
- return (PB_DS_BASE_C_DEC::end_iterator());
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-find_by_order(size_type order) const
-{
- return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-order_of_key(const_key_reference r_key) const
-{
- const_node_iterator it = node_begin();
-
- const_node_iterator end_it = node_end();
-
- const cmp_fn& r_cmp_fn =
- const_cast<PB_DS_CLASS_C_DEC* >(this)->get_cmp_fn();
-
- size_type ord = 0;
-
- while (it != end_it)
- {
- const_node_iterator l_it = it.get_l_child();
-
- if (r_cmp_fn(r_key, extract_key(*(*it))))
- it = l_it;
- else if (r_cmp_fn(extract_key(*(*it)), r_key))
- {
-
- ord += (l_it == end_it)?
- 1 :
- 1 + l_it.get_metadata();
-
- it = it.get_r_child();
- }
- else
- {
- ord += (l_it == end_it)?
- 0 :
- l_it.get_metadata();
-
- it = end_it;
- }
- }
-
- return (ord);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-operator()(node_iterator node_it, const_node_iterator end_nd_it) const
-{
- node_iterator l_child_it = node_it.get_l_child();
- const size_type l_rank =(l_child_it == end_nd_it)? 0 : l_child_it.get_metadata();
-
- node_iterator r_child_it = node_it.get_r_child();
- const size_type r_rank =(r_child_it == end_nd_it)? 0 : r_child_it.get_metadata();
-
- const_cast<metadata_reference>(node_it.get_metadata())=
- 1 + l_rank + r_rank;
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~tree_order_statistics_node_update()
-{ }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
deleted file mode 100644
index 6ea68995e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_policy/sample_tree_node_update.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_tree_node_update.hpp
- * Contains a samle node update functor.
- */
-
-#ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
-#define PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
-
-// A sample node updator.
-template<typename Const_Node_Iterator,
-
- class Node_Iterator,
-
- class Cmp_Fn,
-
- class Allocator
- >
-class sample_tree_node_update
-{
-
-public:
-
- // Metadata type.
- typedef size_t metadata_type;
-
-protected:
-
- // Default constructor.
- sample_tree_node_update();
-
- // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator.
- inline void
- operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_TREE_NODE_UPDATOR_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
deleted file mode 100644
index e4bd65649..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/tree_trace_base.hpp
+++ /dev/null
@@ -1,209 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file tree_trace_base.hpp
- * Contains tree-related policies.
- */
-
-#ifndef PB_DS_TREE_TRACE_BASE_HPP
-#define PB_DS_TREE_TRACE_BASE_HPP
-
-#ifdef PB_DS_TREE_TRACE
-
-#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-
-namespace __gnu_pbds
-{
-
- namespace detail
- {
-
-#ifdef PB_DS_TREE_TRACE
-
-#define PB_DS_CLASS_T_DEC \
- template< \
- class Const_Node_Iterator, \
- class Node_Iterator, \
- class Cmp_Fn, \
- bool Node_Based, \
- class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- tree_trace_base< \
- Const_Node_Iterator, \
- Node_Iterator, \
- Cmp_Fn, \
- Node_Based, \
- Allocator>
-
-#define PB_DS_BASE_C_DEC \
- basic_tree_policy_base< \
- Const_Node_Iterator, \
- Node_Iterator, \
- Allocator>
-
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class Cmp_Fn,
- bool Node_Based,
- class Allocator>
- class tree_trace_base : private PB_DS_BASE_C_DEC
- {
- public:
- void
- trace() const;
-
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- typedef Const_Node_Iterator const_node_iterator;
-
- typedef typename Allocator::size_type size_type;
-
- private:
- void
- trace_node(const_node_iterator nd_it, size_type level) const;
-
- virtual bool
- empty() const = 0;
-
- virtual const_node_iterator
- node_begin() const = 0;
-
- virtual const_node_iterator
- node_end() const = 0;
-
- static void
- print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>);
-
- static void
- print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>);
-
- template<typename Metadata_>
- static void
- trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>);
-
- static void
- trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>);
- };
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- trace() const
- {
- if (empty())
- return;
-
- trace_node(node_begin(), 0);
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- trace_node(const_node_iterator nd_it, size_type level) const
- {
- if (nd_it.get_r_child() != node_end())
- trace_node(nd_it.get_r_child(), level + 1);
-
- for (size_type i = 0; i < level; ++i)
- std::cerr << ' ';
-
- print_node_pointer(nd_it, integral_constant<int,Node_Based>());
- std::cerr << base_type::extract_key(*(*nd_it));
-
- typedef
- type_to_type<
- typename const_node_iterator::metadata_type>
- m_type_ind_t;
-
- trace_it_metadata(nd_it, m_type_ind_t());
-
- std::cerr << std::endl;
-
- if (nd_it.get_l_child() != node_end())
- trace_node(nd_it.get_l_child(), level + 1);
- }
-
- PB_DS_CLASS_T_DEC
- template<typename Metadata_>
- void
- PB_DS_CLASS_C_DEC::
- trace_it_metadata(Const_Node_Iterator nd_it, type_to_type<Metadata_>)
- {
- std::cerr << " (" <<
- static_cast<unsigned long>(nd_it.get_metadata()) << ") ";
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- trace_it_metadata(Const_Node_Iterator, type_to_type<null_node_metadata>)
- { }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,true>)
- {
- std::cerr << nd_it.m_p_nd << " ";
- }
-
- PB_DS_CLASS_T_DEC
- void
- PB_DS_CLASS_C_DEC::
- print_node_pointer(Const_Node_Iterator nd_it, integral_constant<int,false>)
- {
- std::cerr <<* nd_it << " ";
- }
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_CLASS_C_DEC
-
-#undef PB_DS_BASE_C_DEC
-
-#endif // #ifdef PB_DS_TREE_TRACE
-
- } // namespace detail
-
-} // namespace __gnu_pbds
-
-#endif // #ifdef PB_DS_TREE_TRACE
-
-#endif // #ifndef PB_DS_TREE_TRACE_BASE_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
deleted file mode 100644
index b4de31fd0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/node_metadata_selector.hpp
+++ /dev/null
@@ -1,116 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file node_metadata_selector.hpp
- * Contains an implementation class for tries.
- */
-
-#ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
-#define PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
-
-#include <ext/pb_ds/detail/basic_tree_policy/null_node_metadata.hpp>
-#include <ext/pb_ds/detail/types_traits.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
- template<typename Node_Update, bool Null>
- struct trie_metadata_helper
- {
- typedef typename Node_Update::metadata_type type;
- };
-
- template<typename Node_Update>
- struct trie_metadata_helper<
- Node_Update,
- true>
- {
- typedef null_node_metadata type;
- };
-
- template<typename Key,
- typename Data,
- class Cmp_Fn,
- template<typename Const_Node_Iterator,
- class Const_Iterator,
- class Cmp_Fn_,
- class Allocator_>
- class Node_Update,
- class Allocator>
- struct trie_node_metadata_selector
- {
- private:
- typedef
- dumconst_node_iterator<
- Key,
- Data,
- Allocator>
- dumconst_node_it;
-
- enum
- {
- null_update =
- is_same<
- Node_Update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator>,
- null_trie_node_update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator> >::value
- };
-
- public:
- typedef
- typename trie_metadata_helper<
- Node_Update<
- dumconst_node_it,
- dumconst_node_it,
- Cmp_Fn,
- Allocator>,
- null_update>::type
- type;
- };
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_TRIE_NODE_METADATA_SELECTOR_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
deleted file mode 100644
index 65245e9dc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/null_node_update_imp.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file null_node_update_imp.hpp
- * Contains an implementation of null_node_update.
- */
-
-PB_DS_CLASS_T_DEC
-template<typename Const_Node_Iterator_,
- typename Node_Iterator_,
- class E_Access_Traits_,
- typename Allocator_>
-inline void
-PB_DS_CLASS_C_DEC::
-swap(null_trie_node_update< Const_Node_Iterator_, Node_Iterator_, E_Access_Traits_, Allocator_>& /*other*/)
-{ }
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
deleted file mode 100644
index 4e27ac21e..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file order_statistics_imp.hpp
- * Contains forward declarations for order_statistics_key
- */
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::iterator
-PB_DS_CLASS_C_DEC::
-find_by_order(size_type order)
-{
- if (empty())
- return (end());
-
- ++order;
-
- node_iterator nd_it = node_begin();
-
- node_iterator end_nd_it = node_end();
-
- while (true)
- {
- if (order > nd_it.get_metadata())
- return (++base_type::rightmost_it(nd_it));
-
- const size_type num_children = nd_it.num_children();
-
- if (num_children == 0)
- return (*nd_it);
-
- for (size_type i = 0; i < num_children; ++i)
- {
- node_iterator child_nd_it = nd_it.get_child(i);
-
- if (order <= child_nd_it.get_metadata())
- {
- i = num_children;
-
- nd_it = child_nd_it;
- }
- else
- order -= child_nd_it.get_metadata();
- }
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-find_by_order(size_type order) const
-{
- return (const_cast<PB_DS_CLASS_C_DEC* >(this)->find_by_order(order));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-order_of_key(const_key_reference r_key) const
-{
- const E_Access_Traits& r_traits =
- const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits();
-
- return (order_of_prefix(
- r_traits.begin(r_key),
- r_traits.end(r_key)));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-order_of_prefix(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const
-{
- if (empty())
- return (0);
-
- const E_Access_Traits& r_traits =
- const_cast<PB_DS_CLASS_C_DEC* >(this)->get_e_access_traits();
-
- const_node_iterator nd_it = node_begin();
-
- const_node_iterator end_nd_it = node_end();
-
- size_type ord = 0;
-
- while (true)
- {
- const size_type num_children = nd_it.num_children();
-
- if (num_children == 0)
- {
- const_key_reference r_key =
- base_type::extract_key(*(*nd_it));
-
- typename e_access_traits::const_iterator key_b =
- r_traits.begin(r_key);
-
- typename e_access_traits::const_iterator key_e =
- r_traits.end(r_key);
-
- return ((base_type::less( key_b, key_e, b, e, r_traits))?
- ord + 1 :
- ord);
- }
-
- const_node_iterator next_nd_it = end_nd_it;
-
- size_type i = num_children - 1;
-
- do
- {
- const_node_iterator child_nd_it = nd_it.get_child(i);
-
- if (next_nd_it != end_nd_it)
- ord += child_nd_it.get_metadata();
- else if (!base_type::less(
- b, e,
- child_nd_it.valid_prefix().first,
- child_nd_it.valid_prefix().second,
- r_traits))
- next_nd_it = child_nd_it;
- }
- while (i-- > 0);
-
- if (next_nd_it == end_nd_it)
- return (ord);
-
- nd_it = next_nd_it;
- }
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-operator()(node_iterator nd_it, const_node_iterator /*end_nd_it*/) const
-{
- const size_type num_children = nd_it.num_children();
-
- size_type children_rank = 0;
-
- for (size_type i = 0; i < num_children; ++i)
- children_rank += nd_it.get_child(i).get_metadata();
-
- const_cast<size_type& >(nd_it.get_metadata()) =(num_children == 0)? 1 : children_rank;
-}
-
-PB_DS_CLASS_T_DEC
-PB_DS_CLASS_C_DEC::
-~trie_order_statistics_node_update()
-{ }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
deleted file mode 100644
index cdd898929..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp
+++ /dev/null
@@ -1,151 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file prefix_search_node_update_imp.hpp
- * Contains an implementation of prefix_search_node_update.
- */
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::const_iterator,
- typename PB_DS_CLASS_C_DEC::const_iterator>
-PB_DS_CLASS_C_DEC::
-prefix_range(const_key_reference r_key) const
-{
- const e_access_traits& r_traits = get_e_access_traits();
-
- return (prefix_range(
- r_traits.begin(r_key),
- r_traits.end(r_key)));
-}
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::iterator,
- typename PB_DS_CLASS_C_DEC::iterator>
-PB_DS_CLASS_C_DEC::
-prefix_range(const_key_reference r_key)
-{
- return (prefix_range(
- get_e_access_traits().begin(r_key),
- get_e_access_traits().end(r_key)));
-}
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::const_iterator,
- typename PB_DS_CLASS_C_DEC::const_iterator>
-PB_DS_CLASS_C_DEC::
-prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e) const
-{
- const std::pair<iterator, iterator> non_const_ret =
- const_cast<PB_DS_CLASS_C_DEC* >(this)->prefix_range(b, e);
-
- return (std::make_pair(
- const_iterator(non_const_ret.first),
- const_iterator(non_const_ret.second)));
-}
-
-PB_DS_CLASS_T_DEC
-std::pair<
- typename PB_DS_CLASS_C_DEC::iterator,
- typename PB_DS_CLASS_C_DEC::iterator>
-PB_DS_CLASS_C_DEC::
-prefix_range(typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e)
-{
- Node_Iterator nd_it = node_begin();
- Node_Iterator end_nd_it = node_end();
-
- const e_access_traits& r_traits =
- get_e_access_traits();
-
- const size_type given_range_length = std::distance(b, e);
-
- while (true)
- {
- if (nd_it == end_nd_it)
- return (std::make_pair(end(), end()));
-
- const size_type common_range_length =
- PB_DS_BASE_C_DEC::common_prefix_len(nd_it, b, e, r_traits);
-
- if (common_range_length >= given_range_length)
- {
- iterator ret_b = leftmost_it(nd_it);
-
- iterator ret_e = rightmost_it(nd_it);
-
- return (std::make_pair(ret_b, ++ret_e));
- }
-
- nd_it = next_child(nd_it, b, e, end_nd_it, r_traits);
- }
-}
-
-PB_DS_CLASS_T_DEC
-typename PB_DS_CLASS_C_DEC::node_iterator
-PB_DS_CLASS_C_DEC::
-next_child(node_iterator nd_it, typename e_access_traits::const_iterator b, typename e_access_traits::const_iterator e, node_iterator end_nd_it, const e_access_traits& r_traits)
-{
- const size_type num_children = nd_it.num_children();
-
- node_iterator ret = end_nd_it;
-
- size_type max_length = 0;
-
- for (size_type i = 0; i < num_children; ++i)
- {
- node_iterator pot = nd_it.get_child(i);
-
- const size_type common_range_length =
- PB_DS_BASE_C_DEC::common_prefix_len( pot, b, e, r_traits);
-
- if (common_range_length > max_length)
- {
- ret = pot;
-
- max_length = common_range_length;
- }
- }
-
- return (ret);
-}
-
-PB_DS_CLASS_T_DEC
-inline void
-PB_DS_CLASS_C_DEC::
-operator()(node_iterator /*nd_it*/, const_node_iterator /*end_nd_it*/) const
-{ }
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
deleted file mode 100644
index 34fbe0cc3..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_e_access_traits.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_trie_e_access_traits.hpp
- * Contains a sample probe policy.
- */
-
-#ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
-#define PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
-
-// A sample trie element-access traits.
-class sample_trie_e_access_traits
-{
-
-public:
-
- // Size type.
- typedef size_t size_type;
-
- // Key type.
- typedef std::string key_type;
-
- // Const key reference type.
- typedef
- typename Allocator::template rebind<
- key_type>::other::const_reference
- const_key_reference;
-
- // Element const iterator type.
- typedef std::string::const_iterator const_iterator;
-
- // Element type.
- typedef char e_type;
-
- enum
- {
- max_size = 4
- };
-
-public:
-
- // Returns a const_iterator to the first element of r_key.
- inline static const_iterator
- begin(const_key_reference r_key);
-
- // Returns a const_iterator to the after-last element of r_key.
- inline static const_iterator
- end(const_key_reference r_key);
-
- // Maps an element to a position.
- inline static size_type
- e_pos(e_type e);
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_TRIE_E_ACCESS_TRAITS_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
deleted file mode 100644
index 55fd99787..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/sample_trie_node_update.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file sample_trie_node_update.hpp
- * Contains a samle node update functor.
- */
-
-#ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
-#define PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
-
-// A sample node updator.
-template<typename Const_Node_Iterator,
-
- class Node_Iterator,
-
- class E_Access_Traits,
-
- class Allocator
- >
-class sample_trie_node_update
-{
-
-public:
-
- // Metadata type.
- typedef size_t metadata_type;
-
-protected:
-
- // Default constructor.
- sample_trie_node_update();
-
- // Updates the rank of a node through a node_iterator node_it; end_nd_it is the end node iterator.
- inline void
- operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
-
-};
-
-#endif // #ifndef PB_DS_SAMPLE_TRIE_NODE_UPDATOR_HPP
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
deleted file mode 100644
index 228a4a5dc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file string_trie_e_access_traits_imp.hpp
- * Contains a policy for extracting character positions from
- * a string for a vector-based PATRICIA tree
- */
-
-PB_DS_CLASS_T_DEC
-detail::integral_constant<int, Reverse> PB_DS_CLASS_C_DEC::s_rev_ind;
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::size_type
-PB_DS_CLASS_C_DEC::
-e_pos(e_type e)
-{
- return (static_cast<size_type>(e - min_e_val));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin(const_key_reference r_key)
-{
- return (begin_imp(r_key, s_rev_ind));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end(const_key_reference r_key)
-{
- return (end_imp(r_key, s_rev_ind));
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin_imp(const_key_reference r_key, detail::false_type)
-{
- return (r_key.begin());
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-begin_imp(const_key_reference r_key, detail::true_type)
-{
- return (r_key.rbegin());
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end_imp(const_key_reference r_key, detail::false_type)
-{
- return (r_key.end());
-}
-
-PB_DS_CLASS_T_DEC
-inline typename PB_DS_CLASS_C_DEC::const_iterator
-PB_DS_CLASS_C_DEC::
-end_imp(const_key_reference r_key, detail::true_type)
-{
- return (r_key.rend());
-}
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
deleted file mode 100644
index db912a008..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/trie_policy/trie_policy_base.hpp
+++ /dev/null
@@ -1,249 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trie_policy_base.hpp
- * Contains an implementation of trie_policy_base.
- */
-
-#ifndef PB_DS_TRIE_POLICY_BASE_HPP
-#define PB_DS_TRIE_POLICY_BASE_HPP
-
-#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
-
-#define PB_DS_CLASS_T_DEC \
- template< \
- class Const_Node_Iterator, \
- class Node_Iterator, \
- class E_Access_Traits, \
- typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- trie_policy_base< \
- Const_Node_Iterator, \
- Node_Iterator, \
- E_Access_Traits, \
- Allocator>
-
-#define PB_DS_BASE_C_DEC \
- basic_tree_policy_base< \
- Const_Node_Iterator, \
- Node_Iterator, \
- Allocator>
-
- template<typename Const_Node_Iterator,
- class Node_Iterator,
- class E_Access_Traits,
- class Allocator>
- class trie_policy_base : public PB_DS_BASE_C_DEC
- {
-
- public:
-
- typedef E_Access_Traits e_access_traits;
-
- typedef Allocator allocator_type;
-
- typedef typename allocator_type::size_type size_type;
-
- typedef null_node_metadata metadata_type;
-
- typedef Const_Node_Iterator const_node_iterator;
-
- typedef Node_Iterator node_iterator;
-
- typedef typename const_node_iterator::value_type const_iterator;
-
- typedef typename node_iterator::value_type iterator;
-
- public:
-
- typedef typename PB_DS_BASE_C_DEC::key_type key_type;
-
- typedef
- typename PB_DS_BASE_C_DEC::const_key_reference
- const_key_reference;
-
- protected:
-
- virtual const_iterator
- end() const = 0;
-
- virtual iterator
- end() = 0;
-
- virtual const_node_iterator
- node_begin() const = 0;
-
- virtual node_iterator
- node_begin() = 0;
-
- virtual const_node_iterator
- node_end() const = 0;
-
- virtual node_iterator
- node_end() = 0;
-
- virtual const e_access_traits&
- get_e_access_traits() const = 0;
-
- private:
- typedef
- std::pair<
- typename e_access_traits::const_iterator,
- typename e_access_traits::const_iterator>
- prefix_range_t;
-
- typedef PB_DS_BASE_C_DEC base_type;
-
- protected:
- static size_type
- common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits);
-
- static iterator
- leftmost_it(node_iterator nd_it);
-
- static iterator
- rightmost_it(node_iterator nd_it);
-
- static bool
- less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits);
- };
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::size_type
- PB_DS_CLASS_C_DEC::
- common_prefix_len(node_iterator nd_it, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits)
- {
- prefix_range_t pref_range = nd_it.valid_prefix();
-
- typename e_access_traits::const_iterator b_l = pref_range.first;
- typename e_access_traits::const_iterator e_l = pref_range.second;
-
- const size_type range_length_l =
- std::distance(b_l, e_l);
-
- const size_type range_length_r =
- std::distance(b_r, e_r);
-
- if (range_length_r < range_length_l)
- {
- std::swap(b_l, b_r);
-
- std::swap(e_l, e_r);
- }
-
- size_type ret = 0;
-
- while (b_l != e_l)
- {
- if (r_traits.e_pos(*b_l) != r_traits.e_pos(*b_r))
- return (ret);
-
- ++ret;
-
- ++b_l;
-
- ++b_r;
- }
-
- return (ret);
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- leftmost_it(node_iterator nd_it)
- {
- if (nd_it.num_children() == 0)
- return (*nd_it);
-
- return (leftmost_it(nd_it.get_child(0)));
- }
-
- PB_DS_CLASS_T_DEC
- typename PB_DS_CLASS_C_DEC::iterator
- PB_DS_CLASS_C_DEC::
- rightmost_it(node_iterator nd_it)
- {
- const size_type num_children = nd_it.num_children();
-
- if (num_children == 0)
- return (*nd_it);
-
- return (rightmost_it(nd_it.get_child(num_children - 1)));
- }
-
- PB_DS_CLASS_T_DEC
- bool
- PB_DS_CLASS_C_DEC::
- less(typename e_access_traits::const_iterator b_l, typename e_access_traits::const_iterator e_l, typename e_access_traits::const_iterator b_r, typename e_access_traits::const_iterator e_r, const e_access_traits& r_traits)
- {
- while (b_l != e_l)
- {
- if (b_r == e_r)
- return (false);
-
- size_type l_pos =
- r_traits.e_pos(*b_l);
- size_type r_pos =
- r_traits.e_pos(*b_r);
-
- if (l_pos != r_pos)
- return (l_pos < r_pos);
-
- ++b_l;
- ++b_r;
- }
-
- return (b_r != e_r);
- }
-
-#undef PB_DS_CLASS_T_DEC
-
-#undef PB_DS_CLASS_C_DEC
-
-#undef PB_DS_BASE_C_DEC
-
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif // #ifndef PB_DS_TRIE_POLICY_BASE_HPP
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
deleted file mode 100644
index 55f349a26..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/type_utils.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file type_utils.hpp
- * Contains utilities for handnling types. All of these classes are based on
- * "Modern C++" by Andrei Alxandrescu.
- */
-
-#ifndef PB_DS_TYPE_UTILS_HPP
-#define PB_DS_TYPE_UTILS_HPP
-
-#include <cstddef>
-#include <utility>
-#include <tr1/type_traits>
-#include <ext/type_traits.h>
-#include <ext/numeric_traits.h>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- using std::tr1::is_same;
- using std::tr1::is_const;
- using std::tr1::is_pointer;
- using std::tr1::is_reference;
- using std::tr1::is_fundamental;
- using std::tr1::is_member_object_pointer;
- using std::tr1::is_member_pointer;
- using std::tr1::is_base_of;
- using std::tr1::remove_const;
- using std::tr1::remove_reference;
-
- // Need integral_const<bool, true> <-> integral_const<int, 1>, so
- // because of this use the following typedefs instead of importing
- // std::tr1's.
- using std::tr1::integral_constant;
- typedef std::tr1::integral_constant<int, 1> true_type;
- typedef std::tr1::integral_constant<int, 0> false_type;
-
- using __gnu_cxx::__conditional_type;
- using __gnu_cxx::__numeric_traits;
-
- template<typename T>
- struct is_const_pointer
- {
- enum
- {
- value = is_const<T>::value && is_pointer<T>::value
- };
- };
-
- template<typename T>
- struct is_const_reference
- {
- enum
- {
- value = is_const<T>::value && is_reference<T>::value
- };
- };
-
- template<typename T>
- struct is_simple
- {
- enum
- {
- value = is_fundamental<typename remove_const<T>::type>::value
- || is_pointer<typename remove_const<T>::type>::value
- || is_member_pointer<T>::value
- };
- };
-
- template<typename T>
- class is_pair
- {
- private:
- template<typename U>
- struct is_pair_imp
- {
- enum
- {
- value = 0
- };
- };
-
- template<typename U, typename V>
- struct is_pair_imp<std::pair<U,V> >
- {
- enum
- {
- value = 1
- };
- };
-
- public:
- enum
- {
- value = is_pair_imp<T>::value
- };
- };
-
- // Use C++0x's static_assert if possible.
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
-#define PB_DS_STATIC_ASSERT(UNIQUE, E) static_assert(E, #UNIQUE)
-#else
- template<bool>
- struct __static_assert;
-
- template<>
- struct __static_assert<true>
- { };
-
- template<int>
- struct __static_assert_dumclass
- {
- enum
- {
- v = 1
- };
- };
-
-#define PB_DS_STATIC_ASSERT(UNIQUE, E) \
- typedef __gnu_pbds::detail::__static_assert_dumclass<sizeof(__gnu_pbds::detail::__static_assert<bool(E)>)> UNIQUE##__static_assert_type
-
-#endif
-
- template<typename Type>
- struct type_to_type
- {
- typedef Type type;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
deleted file mode 100644
index 6d5a07838..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/types_traits.hpp
+++ /dev/null
@@ -1,82 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file types_traits.hpp
- * Contains a traits class of types used by containers.
- */
-
-#ifndef PB_DS_TYPES_TRAITS_HPP
-#define PB_DS_TYPES_TRAITS_HPP
-
-#include <ext/pb_ds/detail/basic_types.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <utility>
-
-namespace __gnu_pbds
-{
- namespace detail
- {
- template<typename Key, typename Mapped, typename Alloc, bool Store_Extra>
- struct vt_base_selector
- {
- typedef value_type_base<Key, Mapped, Alloc, Store_Extra> type;
- };
-
- template<typename Key, typename Mapped, typename Alloc, bool Store_Extra>
- struct types_traits
- : public vt_base_selector<Key, Mapped, Alloc, Store_Extra>::type
- {
- typedef typename Alloc::template rebind<Key>::other key_allocator;
- typedef typename key_allocator::value_type key_type;
- typedef typename key_allocator::pointer key_pointer;
- typedef typename key_allocator::const_pointer const_key_pointer;
- typedef typename key_allocator::reference key_reference;
- typedef typename key_allocator::const_reference const_key_reference;
- typedef typename Alloc::size_type size_type;
-
- // Extra value (used when the extra value is stored with each value).
- typedef std::pair<size_type, size_type> comp_hash;
-
- typedef integral_constant<int, Store_Extra> store_extra;
- store_extra m_store_extra_indicator;
-
- typedef typename no_throw_copies<Key, Mapped>::indicator no_throw_copies;
- no_throw_copies m_no_throw_copies_indicator;
- };
- } // namespace detail
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
deleted file mode 100644
index 38d4eb1cf..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_iterator.hpp
- * Contains an iterator class used for const ranging over the elements of the
- * table.
- */
-
-// Const range-type iterator.
-class const_iterator_ :
- public const_point_iterator_
-
-{
-
-public:
-
- // Category.
- typedef std::forward_iterator_tag iterator_category;
-
- // Difference type.
- typedef typename Allocator::difference_type difference_type;
-
- // Iterator's value type.
- typedef value_type_ value_type;
-
- // Iterator's pointer type.
- typedef pointer_ pointer;
-
- // Iterator's const pointer type.
- typedef const_pointer_ const_pointer;
-
- // Iterator's reference type.
- typedef reference_ reference;
-
- // Iterator's const reference type.
- typedef const_reference_ const_reference;
-
-public:
-
- // Default constructor.
- inline
- const_iterator_()
-
- : m_p_tbl(NULL)
- { }
-
- // Increments.
- inline const_iterator_&
- operator++()
- {
- m_p_tbl->inc_it_state(base_type::m_p_value, m_pos);
-
- return (*this);
- }
-
- // Increments.
- inline const_iterator_
- operator++(int)
- {
- const_iterator_ ret =* this;
-
- m_p_tbl->inc_it_state(base_type::m_p_value, m_pos);
-
- return (ret);
- }
-
-protected:
-
- typedef const_point_iterator_ base_type;
-
-protected:
-
- /**
- * Constructor used by the table to initiate the generalized
- * pointer and position (e.g., this is called from within a find()
- * of a table.
- * */
- inline
- const_iterator_(const_pointer_ p_value, PB_DS_GEN_POS pos, const PB_DS_CLASS_C_DEC* p_tbl) : const_point_iterator_(p_value),
- m_p_tbl(p_tbl),
- m_pos(pos)
- { }
-
-protected:
-
- /**
- * Pointer to the table object which created the iterator (used for
- * incrementing its position.
- * */
- const PB_DS_CLASS_C_DEC* m_p_tbl;
-
- PB_DS_GEN_POS m_pos;
-
- friend class PB_DS_CLASS_C_DEC;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
deleted file mode 100644
index bc0b2ad62..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/const_point_iterator.hpp
+++ /dev/null
@@ -1,151 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file const_point_iterator.hpp
- * Contains an iterator class returned by the tables' const find and insert
- * methods.
- */
-
-class point_iterator_;
-
-// Const point-type iterator.
-class const_point_iterator_
-{
-
-public:
-
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // Iterator's value type.
- typedef value_type_ value_type;
-
- // Iterator's pointer type.
- typedef pointer_ pointer;
-
- // Iterator's const pointer type.
- typedef const_pointer_ const_pointer;
-
- // Iterator's reference type.
- typedef reference_ reference;
-
- // Iterator's const reference type.
- typedef const_reference_ const_reference;
-
-public:
-
- inline
- const_point_iterator_(const_pointer p_value) : m_p_value(p_value)
- { }
-
- // Default constructor.
- inline
- const_point_iterator_()
-
- : m_p_value(NULL)
- { }
-
- // Copy constructor.
- inline
- const_point_iterator_(const const_point_iterator_& other)
-
- : m_p_value(other.m_p_value)
- { }
-
- // Copy constructor.
- inline
- const_point_iterator_(const point_iterator_& other)
-
- : m_p_value(other.m_p_value)
- { }
-
- // Access.
- inline const_pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL);
-
- return (m_p_value);
- }
-
- // Access.
- inline const_reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL);
-
- return (*m_p_value);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const point_iterator_& other) const
- {
- return (m_p_value == other.m_p_value);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const const_point_iterator_& other) const
- {
- return (m_p_value == other.m_p_value);
- }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const point_iterator_& other) const
- {
- return (m_p_value != other.m_p_value);
- }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const const_point_iterator_& other) const
- {
- return (m_p_value != other.m_p_value);
- }
-
-protected:
- const_pointer m_p_value;
-
- friend class point_iterator_;
-
- friend class PB_DS_CLASS_C_DEC;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
deleted file mode 100644
index 3e21aba8b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/iterator.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file iterator.hpp
- * Contains an iterator_ class used for ranging over the elements of the
- * table.
- */
-
-// Range-type iterator.
-class iterator_ :
- public const_iterator_
-
-{
-
-public:
-
- // Category.
- typedef std::forward_iterator_tag iterator_category;
-
- // Difference type.
- typedef typename Allocator::difference_type difference_type;
-
- // Iterator's value type.
- typedef value_type_ value_type;
-
- // Iterator's pointer type.
- typedef pointer_ pointer;
-
- // Iterator's const pointer type.
- typedef const_pointer_ const_pointer;
-
- // Iterator's reference type.
- typedef reference_ reference;
-
- // Iterator's const reference type.
- typedef const_reference_ const_reference;
-
-public:
-
- // Default constructor.
- inline
- iterator_()
-
- : const_iterator_(NULL, PB_DS_GEN_POS(), NULL)
- { }
-
- // Conversion to a point-type iterator.
- inline
- operator point_iterator_()
- {
- return (point_iterator_(
- const_cast<pointer>(const_iterator_::m_p_value)));
- }
-
- // Conversion to a point-type iterator.
- inline
- operator const point_iterator_() const
- {
- return (point_iterator_(
- const_cast<pointer>(const_iterator_::m_p_value)));
- }
-
- // Access.
- inline pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != NULL);
-
- return (const_cast<pointer>(base_type::m_p_value));
- }
-
- // Access.
- inline reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(base_type::m_p_value != NULL);
-
- return (const_cast<reference>(*base_type::m_p_value));
- }
-
- // Increments.
- inline iterator_&
- operator++()
- {
- base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos);
-
- return (*this);
- }
-
- // Increments.
- inline iterator_
- operator++(int)
- {
- iterator_ ret =* this;
-
- base_type::m_p_tbl->inc_it_state(base_type::m_p_value, base_type::m_pos);
-
- return (ret);
- }
-
-protected:
- typedef const_iterator_ base_type;
-
-protected:
-
- /**
- * Constructor used by the table to initiate the generalized
- * pointer and position (e.g., this is called from within a find()
- * of a table.
- * */
- inline
- iterator_(pointer p_value, PB_DS_GEN_POS pos, PB_DS_CLASS_C_DEC* p_tbl) : const_iterator_(p_value, pos, p_tbl)
- { }
-
- friend class PB_DS_CLASS_C_DEC;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
deleted file mode 100644
index 37ce90069..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file point_iterator.hpp
- * Contains an iterator class returned by the tables' find and insert
- * methods.
- */
-
-// Find type iterator.
-class point_iterator_
-{
-
-public:
-
- // Category.
- typedef trivial_iterator_tag iterator_category;
-
- // Difference type.
- typedef trivial_iterator_difference_type difference_type;
-
- // Iterator's value type.
- typedef value_type_ value_type;
-
- // Iterator's pointer type.
- typedef pointer_ pointer;
-
- // Iterator's const pointer type.
- typedef const_pointer_ const_pointer;
-
- // Iterator's reference type.
- typedef reference_ reference;
-
- // Iterator's const reference type.
- typedef const_reference_ const_reference;
-
-public:
-
- // Default constructor.
- inline
- point_iterator_()
-
- : m_p_value(NULL)
- { }
-
- // Copy constructor.
- inline
- point_iterator_(const point_iterator_& other)
-
- : m_p_value(other.m_p_value)
- { }
-
- // Access.
- inline pointer
- operator->() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL);
-
- return (m_p_value);
- }
-
- // Access.
- inline reference
- operator*() const
- {
- _GLIBCXX_DEBUG_ASSERT(m_p_value != NULL);
-
- return (*m_p_value);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const point_iterator_& other) const
- {
- return (m_p_value == other.m_p_value);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator==(const const_point_iterator_& other) const
- {
- return (m_p_value == other.m_p_value);
- }
-
- // Compares content to a different iterator object.
- inline bool
- operator!=(const point_iterator_& other) const
- {
- return (m_p_value != other.m_p_value);
- }
-
- // Compares content (negatively) to a different iterator object.
- inline bool
- operator!=(const const_point_iterator_& other) const
- {
- return (m_p_value != other.m_p_value);
- }
-
- inline
- point_iterator_(pointer p_value) : m_p_value(p_value)
- { }
-
-protected:
- friend class const_point_iterator_;
-
- friend class PB_DS_CLASS_C_DEC;
-
-protected:
- pointer m_p_value;
-};
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/exception.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/exception.hpp
deleted file mode 100644
index 4f796b1ef..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/exception.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file exception.hpp
- * Contains exception classes.
- */
-
-#ifndef PB_DS_EXCEPTION_HPP
-#define PB_DS_EXCEPTION_HPP
-
-#include <stdexcept>
-#include <cstdlib>
-
-namespace __gnu_pbds
-{
- // Base class for exceptions.
- struct container_error : public std::logic_error
- {
- container_error()
- : std::logic_error(__N("__gnu_pbds::container_error")) { }
- };
-
- // An entry cannot be inserted into a container object for logical
- // reasons (not, e.g., if memory is unabvailable, in which case
- // the allocator_type's exception will be thrown).
- struct insert_error : public container_error { };
-
- // A join cannot be performed logical reasons (i.e., the ranges of
- // the two container objects being joined overlaps.
- struct join_error : public container_error { };
-
- // A container cannot be resized.
- struct resize_error : public container_error { };
-
-#if __EXCEPTIONS
- inline void
- __throw_container_error(void)
- { throw container_error(); }
-
- inline void
- __throw_insert_error(void)
- { throw insert_error(); }
-
- inline void
- __throw_join_error(void)
- { throw join_error(); }
-
- inline void
- __throw_resize_error(void)
- { throw resize_error(); }
-#else
- inline void
- __throw_container_error(void)
- { std::abort(); }
-
- inline void
- __throw_insert_error(void)
- { std::abort(); }
-
- inline void
- __throw_join_error(void)
- { std::abort(); }
-
- inline void
- __throw_resize_error(void)
- { std::abort(); }
-#endif
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
deleted file mode 100644
index 24c0c4562..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/hash_policy.hpp
+++ /dev/null
@@ -1,604 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file hash_policy.hpp
- * Contains hash-related policies.
- */
-
-#ifndef PB_DS_HASH_POLICY_HPP
-#define PB_DS_HASH_POLICY_HPP
-
-#include <algorithm>
-#include <vector>
-#include <cmath>
-#include <ext/pb_ds/exception.hpp>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/hash_fn/mask_based_range_hashing.hpp>
-#include <ext/pb_ds/detail/hash_fn/mod_based_range_hashing.hpp>
-#include <ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_size_base.hpp>
-
-namespace __gnu_pbds
-{
- // A null hash function, indicating that the combining hash function
- // is actually a ranged hash function.
- struct null_hash_fn
- { };
-
- // A null probe function, indicating that the combining probe
- // function is actually a ranged probe function.
- struct null_probe_fn
- { };
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC linear_probe_fn<Size_Type>
-
- // A probe sequence policy using fixed increments.
- template<typename Size_Type = size_t>
- class linear_probe_fn
- {
- public:
- typedef Size_Type size_type;
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- // Returns the i-th offset from the hash value.
- inline size_type
- operator()(size_type i) const;
- };
-
-#include <ext/pb_ds/detail/hash_fn/linear_probe_fn_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC quadratic_probe_fn<Size_Type>
-
- // A probe sequence policy using square increments.
- template<typename Size_Type = size_t>
- class quadratic_probe_fn
- {
- public:
- typedef Size_Type size_type;
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- // Returns the i-th offset from the hash value.
- inline size_type
- operator()(size_type i) const;
- };
-
-#include <ext/pb_ds/detail/hash_fn/quadratic_probe_fn_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC direct_mask_range_hashing<Size_Type>
-
- // A mask range-hashing class (uses a bit-mask).
- template<typename Size_Type = size_t>
- class direct_mask_range_hashing
- : public detail::mask_based_range_hashing<Size_Type>
- {
- private:
- typedef detail::mask_based_range_hashing<Size_Type> mask_based_base;
-
- public:
- typedef Size_Type size_type;
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- void
- notify_resized(size_type size);
-
- // Transforms the __hash value hash into a ranged-hash value
- // (using a bit-mask).
- inline size_type
- operator()(size_type hash) const;
- };
-
-#include <ext/pb_ds/detail/hash_fn/direct_mask_range_hashing_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC direct_mod_range_hashing<Size_Type>
-
- // A mod range-hashing class (uses the modulo function).
- template<typename Size_Type = size_t>
- class direct_mod_range_hashing
- : public detail::mod_based_range_hashing<Size_Type>
- {
- public:
- typedef Size_Type size_type;
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- void
- notify_resized(size_type size);
-
- // Transforms the __hash value hash into a ranged-hash value
- // (using a modulo operation).
- inline size_type
- operator()(size_type hash) const;
-
- private:
- typedef detail::mod_based_range_hashing<size_type> mod_based_base;
- };
-
-#include <ext/pb_ds/detail/hash_fn/direct_mod_range_hashing_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<bool External_Load_Access, typename Size_Type>
-#define PB_DS_CLASS_C_DEC hash_load_check_resize_trigger<External_Load_Access, Size_Type>
-#define PB_DS_SIZE_BASE_C_DEC detail::hash_load_check_resize_trigger_size_base<Size_Type, External_Load_Access>
-
- // A resize trigger policy based on a load check. It keeps the
- // load factor between some load factors load_min and load_max.
- template<bool External_Load_Access = false, typename Size_Type = size_t>
- class hash_load_check_resize_trigger : private PB_DS_SIZE_BASE_C_DEC
- {
- public:
- typedef Size_Type size_type;
-
- enum
- {
- external_load_access = External_Load_Access
- };
-
- // Default constructor, or constructor taking load_min and
- // load_max load factors between which this policy will keep the
- // actual load.
- hash_load_check_resize_trigger(float load_min = 0.125,
- float load_max = 0.5);
-
- void
- swap(hash_load_check_resize_trigger& other);
-
- virtual
- ~hash_load_check_resize_trigger();
-
- // Returns a pair of the minimal and maximal loads, respectively.
- inline std::pair<float, float>
- get_loads() const;
-
- // Sets the loads through a pair of the minimal and maximal
- // loads, respectively.
- void
- set_loads(std::pair<float, float> load_pair);
-
- protected:
- inline void
- notify_insert_search_start();
-
- inline void
- notify_insert_search_collision();
-
- inline void
- notify_insert_search_end();
-
- inline void
- notify_find_search_start();
-
- inline void
- notify_find_search_collision();
-
- inline void
- notify_find_search_end();
-
- inline void
- notify_erase_search_start();
-
- inline void
- notify_erase_search_collision();
-
- inline void
- notify_erase_search_end();
-
- // Notifies an element was inserted. The total number of entries
- // in the table is num_entries.
- inline void
- notify_inserted(size_type num_entries);
-
- inline void
- notify_erased(size_type num_entries);
-
- // Notifies the table was cleared.
- void
- notify_cleared();
-
- // Notifies the table was resized as a result of this object's
- // signifying that a resize is needed.
- void
- notify_resized(size_type new_size);
-
- void
- notify_externally_resized(size_type new_size);
-
- inline bool
- is_resize_needed() const;
-
- inline bool
- is_grow_needed(size_type size, size_type num_entries) const;
-
- private:
- virtual void
- do_resize(size_type new_size);
-
- typedef PB_DS_SIZE_BASE_C_DEC size_base;
-
-#ifdef _GLIBCXX_DEBUG
- void
- assert_valid() const;
-#endif
-
- float m_load_min;
- float m_load_max;
- size_type m_next_shrink_size;
- size_type m_next_grow_size;
- bool m_resize_needed;
- };
-
-#include <ext/pb_ds/detail/resize_policy/hash_load_check_resize_trigger_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_SIZE_BASE_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<bool External_Load_Access, typename Size_Type>
-#define PB_DS_CLASS_C_DEC cc_hash_max_collision_check_resize_trigger<External_Load_Access, Size_Type>
-
- // A resize trigger policy based on collision checks. It keeps the
- // simulated load factor lower than some given load factor.
- template<bool External_Load_Access = false, typename Size_Type = size_t>
- class cc_hash_max_collision_check_resize_trigger
- {
- public:
- typedef Size_Type size_type;
-
- enum
- {
- external_load_access = External_Load_Access
- };
-
- // Default constructor, or constructor taking load, a __load
- // factor which it will attempt to maintain.
- cc_hash_max_collision_check_resize_trigger(float load = 0.5);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- // Returns the current load.
- inline float
- get_load() const;
-
- // Sets the load; does not resize the container.
- void
- set_load(float load);
-
- protected:
- inline void
- notify_insert_search_start();
-
- inline void
- notify_insert_search_collision();
-
- inline void
- notify_insert_search_end();
-
- inline void
- notify_find_search_start();
-
- inline void
- notify_find_search_collision();
-
- inline void
- notify_find_search_end();
-
- inline void
- notify_erase_search_start();
-
- inline void
- notify_erase_search_collision();
-
- inline void
- notify_erase_search_end();
-
- inline void
- notify_inserted(size_type num_entries);
-
- inline void
- notify_erased(size_type num_entries);
-
- void
- notify_cleared();
-
- // Notifies the table was resized as a result of this object's
- // signifying that a resize is needed.
- void
- notify_resized(size_type new_size);
-
- void
- notify_externally_resized(size_type new_size);
-
- inline bool
- is_resize_needed() const;
-
- inline bool
- is_grow_needed(size_type size, size_type num_entries) const;
-
- private:
- void
- calc_max_num_coll();
-
- inline void
- calc_resize_needed();
-
- float m_load;
- size_type m_size;
- size_type m_num_col;
- size_type m_max_col;
- bool m_resize_needed;
- };
-
-#include <ext/pb_ds/detail/resize_policy/cc_hash_max_collision_check_resize_trigger_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Type>
-#define PB_DS_CLASS_C_DEC hash_exponential_size_policy<Size_Type>
-
- // A size policy whose sequence of sizes form an exponential
- // sequence (typically powers of 2.
- template<typename Size_Type = size_t>
- class hash_exponential_size_policy
- {
- public:
- typedef Size_Type size_type;
-
- // Default constructor, or onstructor taking a start_size, or
- // constructor taking a start size and grow_factor. The policy
- // will use the sequence of sizes start_size, start_size*
- // grow_factor, start_size* grow_factor^2, ...
- hash_exponential_size_policy(size_type start_size = 8,
- size_type grow_factor = 2);
-
- void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- size_type
- get_nearest_larger_size(size_type size) const;
-
- size_type
- get_nearest_smaller_size(size_type size) const;
-
- private:
- size_type m_start_size;
- size_type m_grow_factor;
- };
-
-#include <ext/pb_ds/detail/resize_policy/hash_exponential_size_policy_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC
-#define PB_DS_CLASS_C_DEC hash_prime_size_policy
-
- // A size policy whose sequence of sizes form a nearly-exponential
- // sequence of primes.
- class hash_prime_size_policy
- {
- public:
- // Size type.
- typedef size_t size_type;
-
- // Default constructor, or onstructor taking a start_size The
- // policy will use the sequence of sizes approximately
- // start_size, start_size* 2, start_size* 2^2, ...
- hash_prime_size_policy(size_type start_size = 8);
-
- inline void
- swap(PB_DS_CLASS_C_DEC& other);
-
- protected:
- size_type
- get_nearest_larger_size(size_type size) const;
-
- size_type
- get_nearest_smaller_size(size_type size) const;
-
- private:
- size_type m_start_size;
- };
-
-#include <ext/pb_ds/detail/resize_policy/hash_prime_size_policy_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<typename Size_Policy, typename Trigger_Policy, bool External_Size_Access, typename Size_Type>
-
-#define PB_DS_CLASS_C_DEC hash_standard_resize_policy<Size_Policy, Trigger_Policy, External_Size_Access, Size_Type>
-
- // A resize policy which delegates operations to size and trigger policies.
- template<typename Size_Policy = hash_exponential_size_policy<>,
- typename Trigger_Policy = hash_load_check_resize_trigger<>,
- bool External_Size_Access = false,
- typename Size_Type = size_t>
- class hash_standard_resize_policy
- : public Size_Policy, public Trigger_Policy
- {
- public:
- typedef Size_Type size_type;
- typedef Trigger_Policy trigger_policy;
- typedef Size_Policy size_policy;
-
- enum
- {
- external_size_access = External_Size_Access
- };
-
- // Default constructor.
- hash_standard_resize_policy();
-
- // constructor taking some policies r_size_policy will be copied
- // by the Size_Policy object of this object.
- hash_standard_resize_policy(const Size_Policy& r_size_policy);
-
- // constructor taking some policies. r_size_policy will be
- // copied by the Size_Policy object of this
- // object. r_trigger_policy will be copied by the Trigger_Policy
- // object of this object.
- hash_standard_resize_policy(const Size_Policy& r_size_policy,
- const Trigger_Policy& r_trigger_policy);
-
- virtual
- ~hash_standard_resize_policy();
-
- inline void
- swap(PB_DS_CLASS_C_DEC& other);
-
- // Access to the Size_Policy object used.
- Size_Policy&
- get_size_policy();
-
- // Const access to the Size_Policy object used.
- const Size_Policy&
- get_size_policy() const;
-
- // Access to the Trigger_Policy object used.
- Trigger_Policy&
- get_trigger_policy();
-
- // Access to the Trigger_Policy object used.
- const Trigger_Policy&
- get_trigger_policy() const;
-
- // Returns the actual size of the container.
- inline size_type
- get_actual_size() const;
-
- // Resizes the container to suggested_new_size, a suggested size
- // (the actual size will be determined by the Size_Policy
- // object).
- void
- resize(size_type suggested_new_size);
-
- protected:
- inline void
- notify_insert_search_start();
-
- inline void
- notify_insert_search_collision();
-
- inline void
- notify_insert_search_end();
-
- inline void
- notify_find_search_start();
-
- inline void
- notify_find_search_collision();
-
- inline void
- notify_find_search_end();
-
- inline void
- notify_erase_search_start();
-
- inline void
- notify_erase_search_collision();
-
- inline void
- notify_erase_search_end();
-
- inline void
- notify_inserted(size_type num_e);
-
- inline void
- notify_erased(size_type num_e);
-
- void
- notify_cleared();
-
- void
- notify_resized(size_type new_size);
-
- inline bool
- is_resize_needed() const;
-
- // Queries what the new size should be, when the container is
- // resized naturally. The current __size of the container is
- // size, and the number of used entries within the container is
- // num_used_e.
- size_type
- get_new_size(size_type size, size_type num_used_e) const;
-
- private:
- // Resizes to new_size.
- virtual void
- do_resize(size_type new_size);
-
- typedef Trigger_Policy trigger_policy_base;
-
- typedef Size_Policy size_policy_base;
-
- size_type m_size;
- };
-
-#include <ext/pb_ds/detail/resize_policy/hash_standard_resize_policy_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
deleted file mode 100644
index ec05b69c7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/list_update_policy.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file list_update_policy.hpp
- * Contains policies for list update containers.
- */
-
-#ifndef PB_DS_LU_POLICY_HPP
-#define PB_DS_LU_POLICY_HPP
-
-#include <cstdlib>
-#include <ext/pb_ds/detail/list_update_policy/counter_lu_metadata.hpp>
-
-namespace __gnu_pbds
-{
- // A null type that means that each link in a list-based container
- // does not actually need metadata.
- struct null_lu_metadata
- { };
-
-#define PB_DS_CLASS_T_DEC template<typename Allocator>
-#define PB_DS_CLASS_C_DEC move_to_front_lu_policy<Allocator>
-
- // A list-update policy that unconditionally moves elements to the
- // front of the list.
- template<typename Allocator = std::allocator<char> >
- class move_to_front_lu_policy
- {
- public:
- typedef Allocator allocator_type;
-
- // Metadata on which this functor operates.
- typedef null_lu_metadata metadata_type;
-
- // Reference to metadata on which this functor operates.
- typedef typename allocator_type::template rebind<metadata_type>::other metadata_rebind;
- typedef typename metadata_rebind::reference metadata_reference;
-
- // Creates a metadata object.
- metadata_type
- operator()() const;
-
- // Decides whether a metadata object should be moved to the front
- // of the list.
- inline bool
- operator()(metadata_reference r_metadata) const;
-
- private:
- static null_lu_metadata s_metadata;
- };
-
-#include <ext/pb_ds/detail/list_update_policy/mtf_lu_policy_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC template<size_t Max_Count, class Allocator>
-#define PB_DS_CLASS_C_DEC counter_lu_policy<Max_Count, Allocator>
-
- // A list-update policy that moves elements to the front of the list
- // based on the counter algorithm.
- template<size_t Max_Count = 5, typename Allocator = std::allocator<char> >
- class counter_lu_policy
- : private detail::counter_lu_policy_base<typename Allocator::size_type>
- {
- public:
- typedef Allocator allocator_type;
-
- enum
- {
- max_count = Max_Count
- };
-
- typedef typename allocator_type::size_type size_type;
-
- // Metadata on which this functor operates.
- typedef detail::counter_lu_metadata<size_type> metadata_type;
-
- // Reference to metadata on which this functor operates.
- typedef typename Allocator::template rebind<metadata_type>::other metadata_rebind;
- typedef typename metadata_rebind::reference metadata_reference;
-
- // Creates a metadata object.
- metadata_type
- operator()() const;
-
- // Decides whether a metadata object should be moved to the front
- // of the list.
- bool
- operator()(metadata_reference r_metadata) const;
-
- private:
- typedef detail::counter_lu_policy_base<typename Allocator::size_type> base_type;
- };
-
-#include <ext/pb_ds/detail/list_update_policy/counter_lu_policy_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
deleted file mode 100644
index 531f70c65..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/priority_queue.hpp
+++ /dev/null
@@ -1,125 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file priority_queue.hpp
- * Contains priority_queues.
- */
-
-#ifndef PB_DS_PRIORITY_QUEUE_HPP
-#define PB_DS_PRIORITY_QUEUE_HPP
-
-#include <ext/pb_ds/tag_and_trait.hpp>
-#include <ext/pb_ds/detail/priority_queue_base_dispatch.hpp>
-#include <ext/pb_ds/detail/standard_policies.hpp>
-
-namespace __gnu_pbds
-{
- // A priority queue.
- template<typename Value_Type,
- typename Cmp_Fn = std::less<Value_Type>,
- typename Tag = pairing_heap_tag,
- typename Allocator = std::allocator<char> >
- class priority_queue
- : public detail::priority_queue_base_dispatch<Value_Type,Cmp_Fn,Tag,Allocator>::type
- {
- private:
- typedef typename detail::priority_queue_base_dispatch<Value_Type,Cmp_Fn,Tag,Allocator>::type base_type;
-
- public:
- typedef Value_Type value_type;
- typedef Cmp_Fn cmp_fn;
- typedef Tag container_category;
- typedef Allocator allocator_type;
- typedef typename allocator_type::size_type size_type;
- typedef typename allocator_type::difference_type difference_type;
-
- typedef typename allocator_type::template rebind<value_type>::other value_rebind;
- typedef typename value_rebind::reference reference;
- typedef typename value_rebind::const_reference const_reference;
- typedef typename value_rebind::pointer pointer;
- typedef typename value_rebind::const_pointer const_pointer;
-
- typedef typename base_type::const_point_iterator const_point_iterator;
- typedef typename base_type::point_iterator point_iterator;
- typedef typename base_type::const_iterator const_iterator;
- typedef typename base_type::iterator iterator;
-
- priority_queue() { }
-
- // Constructor taking some policy objects. r_cmp_fn will be copied
- // by the Cmp_Fn object of the container object.
- priority_queue(const cmp_fn& r_cmp_fn) : base_type(r_cmp_fn) { }
-
- // Constructor taking __iterators to a range of value_types. The
- // value_types between first_it and last_it will be inserted into
- // the container object.
- template<typename It>
- priority_queue(It first_it, It last_it)
- { base_type::copy_from_range(first_it, last_it); }
-
- // Constructor taking __iterators to a range of value_types and
- // some policy objects The value_types between first_it and
- // last_it will be inserted into the container object. r_cmp_fn
- // will be copied by the cmp_fn object of the container object.
- template<typename It>
- priority_queue(It first_it, It last_it, const cmp_fn& r_cmp_fn)
- : base_type(r_cmp_fn)
- { base_type::copy_from_range(first_it, last_it); }
-
- priority_queue(const priority_queue& other)
- : base_type((const base_type& )other) { }
-
- virtual
- ~priority_queue() { }
-
- priority_queue&
- operator=(const priority_queue& other)
- {
- if (this != &other)
- {
- priority_queue tmp(other);
- swap(tmp);
- }
- return *this;
- }
-
- void
- swap(priority_queue& other)
- { base_type::swap(other); }
- };
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
deleted file mode 100644
index ccd2533cc..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tag_and_trait.hpp
+++ /dev/null
@@ -1,363 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file tag_and_trait.hpp
- * Contains tags and traits, e.g., ones describing underlying
- * data structures.
- */
-
-#ifndef PB_DS_TAG_AND_TRAIT_HPP
-#define PB_DS_TAG_AND_TRAIT_HPP
-
-#include <ext/pb_ds/detail/type_utils.hpp>
-
-/**
- * @namespace __gnu_pbds
- * @brief GNU extensions for policy-based data structures for public use.
- */
-namespace __gnu_pbds
-{
- // A trivial iterator tag. Signifies that the iterators has none of
- // the STL's movement abilities.
- struct trivial_iterator_tag
- { };
-
- // Prohibit moving trivial iterators.
- typedef void trivial_iterator_difference_type;
-
-
- // Signifies a basic invalidation guarantee that any iterator,
- // pointer, or reference to a container object's mapped value type
- // is valid as long as the container is not modified.
- struct basic_invalidation_guarantee
- { };
-
- // Signifies an invalidation guarantee that includes all those of
- // its base, and additionally, that any point-type iterator,
- // pointer, or reference to a container object's mapped value type
- // is valid as long as its corresponding entry has not be erased,
- // regardless of modifications to the container object.
- struct point_invalidation_guarantee : public basic_invalidation_guarantee
- { };
-
- // Signifies an invalidation guarantee that includes all those of
- // its base, and additionally, that any range-type iterator
- // (including the returns of begin() and end()) is in the correct
- // relative positions to other range-type iterators as long as its
- // corresponding entry has not be erased, regardless of
- // modifications to the container object.
- struct range_invalidation_guarantee : public point_invalidation_guarantee
- { };
-
-
- /// A mapped-policy indicating that an associative container is a set.
- // XXX should this be a trait of the form is_set<T> ??
- struct null_mapped_type { };
-
-
- /// Base data structure tag.
- struct container_tag
- { };
-
- /// Basic string container, inclusive of strings, ropes, etc.
- struct string_tag : public container_tag { };
-
- /// Basic sequence.
- struct sequence_tag : public container_tag { };
-
- /// Basic associative-container.
- struct associative_container_tag : public container_tag { };
-
- /// Basic hash.
- struct basic_hash_tag : public associative_container_tag { };
-
- /// Collision-chaining hash.
- struct cc_hash_tag : public basic_hash_tag { };
-
- /// General-probing hash.
- struct gp_hash_tag : public basic_hash_tag { };
-
- /// Basic tree.
- struct basic_tree_tag : public associative_container_tag { };
-
- /// tree.
- struct tree_tag : public basic_tree_tag { };
-
- /// Red-black tree.
- struct rb_tree_tag : public tree_tag { };
-
- /// Splay tree.
- struct splay_tree_tag : public tree_tag { };
-
- /// Ordered-vector tree.
- struct ov_tree_tag : public tree_tag { };
-
- /// trie.
- struct trie_tag : public basic_tree_tag { };
-
- /// PATRICIA trie.
- struct pat_trie_tag : public trie_tag { };
-
- /// List-update.
- struct list_update_tag : public associative_container_tag { };
-
- /// Basic priority-queue.
- struct priority_queue_tag : public container_tag { };
-
- /// Pairing-heap.
- struct pairing_heap_tag : public priority_queue_tag { };
-
- /// Binomial-heap.
- struct binomial_heap_tag : public priority_queue_tag { };
-
- /// Redundant-counter binomial-heap.
- struct rc_binomial_heap_tag : public priority_queue_tag { };
-
- /// Binary-heap (array-based).
- struct binary_heap_tag : public priority_queue_tag { };
-
- /// Thin heap.
- struct thin_heap_tag : public priority_queue_tag { };
-
-
- /// Base traits type for containers.
- template<typename Tag>
- struct container_traits_base;
-
- template<>
- struct container_traits_base<cc_hash_tag>
- {
- typedef cc_hash_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<gp_hash_tag>
- {
- typedef gp_hash_tag container_category;
- typedef basic_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<rb_tree_tag>
- {
- typedef rb_tree_tag container_category;
- typedef range_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = true,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = true
- };
- };
-
- template<>
- struct container_traits_base<splay_tree_tag>
- {
- typedef splay_tree_tag container_category;
- typedef range_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = true,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = true
- };
- };
-
- template<>
- struct container_traits_base<ov_tree_tag>
- {
- typedef ov_tree_tag container_category;
- typedef basic_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = true,
- erase_can_throw = true,
- split_join_can_throw = true,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<pat_trie_tag>
- {
- typedef pat_trie_tag container_category;
- typedef range_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = true,
- erase_can_throw = false,
- split_join_can_throw = true,
- reverse_iteration = true
- };
- };
-
- template<>
- struct container_traits_base<list_update_tag>
- {
- typedef list_update_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
-
- template<>
- struct container_traits_base<pairing_heap_tag>
- {
- typedef pairing_heap_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<thin_heap_tag>
- {
- typedef thin_heap_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<binomial_heap_tag>
- {
- typedef binomial_heap_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<rc_binomial_heap_tag>
- {
- typedef rc_binomial_heap_tag container_category;
- typedef point_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = false,
- reverse_iteration = false
- };
- };
-
- template<>
- struct container_traits_base<binary_heap_tag>
- {
- typedef binary_heap_tag container_category;
- typedef basic_invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = false,
- erase_can_throw = false,
- split_join_can_throw = true,
- reverse_iteration = false
- };
- };
-
-
- /// container_traits
- // See Matt Austern for the name, S. Meyers MEFC++ #2, others.
- template<typename Cntnr>
- struct container_traits
- : public container_traits_base<typename Cntnr::container_category>
- {
- typedef Cntnr container_type;
- typedef typename Cntnr::container_category container_category;
- typedef container_traits_base<container_category> base_type;
- typedef typename base_type::invalidation_guarantee invalidation_guarantee;
-
- enum
- {
- order_preserving = base_type::order_preserving,
- erase_can_throw = base_type::erase_can_throw,
- split_join_can_throw = base_type::split_join_can_throw,
- reverse_iteration = base_type::reverse_iteration
- };
- };
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
deleted file mode 100644
index 990860ec0..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/tree_policy.hpp
+++ /dev/null
@@ -1,162 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file tree_policy.hpp
- * Contains tree-related policies.
- */
-
-#ifndef PB_DS_TREE_POLICY_HPP
-#define PB_DS_TREE_POLICY_HPP
-
-#include <iterator>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/basic_tree_policy/basic_tree_policy_base.hpp>
-
-namespace __gnu_pbds
-{
- // A null node updator, indicating that no node updates are required.
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename Cmp_Fn,
- typename Allocator>
- struct null_tree_node_update
- { };
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Const_Node_Iterator, class Node_Iterator, class Cmp_Fn, class Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- tree_order_statistics_node_update<Const_Node_Iterator, Node_Iterator, Cmp_Fn, Allocator>
-
-#define PB_DS_BASE_C_DEC \
- detail::basic_tree_policy_base<Const_Node_Iterator, Node_Iterator, Allocator>
-
- // Functor updating ranks of entrees.
- template<typename Const_Node_Iterator, typename Node_Iterator,
- typename Cmp_Fn, typename Allocator>
- class tree_order_statistics_node_update : private PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef Cmp_Fn cmp_fn;
- typedef Allocator allocator_type;
- typedef typename allocator_type::size_type size_type;
- typedef typename base_type::key_type key_type;
- typedef typename base_type::const_key_reference const_key_reference;
-
- typedef size_type metadata_type;
- typedef Const_Node_Iterator const_node_iterator;
- typedef Node_Iterator node_iterator;
- typedef typename const_node_iterator::value_type const_iterator;
- typedef typename node_iterator::value_type iterator;
-
- // Finds an entry by __order. Returns a const_iterator to the
- // entry with the __order order, or a const_iterator to the
- // container object's end if order is at least the size of the
- // container object.
- inline const_iterator
- find_by_order(size_type order) const;
-
- // Finds an entry by __order. Returns an iterator to the entry
- // with the __order order, or an iterator to the container
- // object's end if order is at least the size of the container
- // object.
- inline iterator
- find_by_order(size_type order);
-
- // Returns the order of a key within a sequence. For exapmle, if
- // r_key is the smallest key, this method will return 0; if r_key
- // is a key between the smallest and next key, this method will
- // return 1; if r_key is a key larger than the largest key, this
- // method will return the size of r_c.
- inline size_type
- order_of_key(const_key_reference r_key) const;
-
- private:
- // Const reference to the container's value-type.
- typedef typename base_type::const_reference const_reference;
-
- // Const pointer to the container's value-type.
- typedef typename base_type::const_pointer const_pointer;
-
- typedef typename allocator_type::template rebind<metadata_type>::other metadata_rebind;
- // Const metadata reference.
- typedef typename metadata_rebind::const_reference const_metadata_reference;
-
- // Metadata reference.
- typedef typename metadata_rebind::reference metadata_reference;
-
- // Returns the const_node_iterator associated with the tree's root node.
- virtual const_node_iterator
- node_begin() const = 0;
-
- // Returns the node_iterator associated with the tree's root node.
- virtual node_iterator
- node_begin() = 0;
-
- // Returns the const_node_iterator associated with a just-after leaf node.
- virtual const_node_iterator
- node_end() const = 0;
-
- // Returns the node_iterator associated with a just-after leaf node.
- virtual node_iterator
- node_end() = 0;
-
- // Access to the cmp_fn object.
- virtual cmp_fn&
- get_cmp_fn() = 0;
-
- protected:
- // Updates the rank of a node through a node_iterator node_it;
- // end_nd_it is the end node iterator.
- inline void
- operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
-
- virtual
- ~tree_order_statistics_node_update();
- };
-
-#include <ext/pb_ds/detail/tree_policy/order_statistics_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp b/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
deleted file mode 100644
index c10591bb7..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pb_ds/trie_policy.hpp
+++ /dev/null
@@ -1,355 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/**
- * @file trie_policy.hpp
- * Contains trie-related policies.
- */
-
-#ifndef PB_DS_TRIE_POLICY_HPP
-#define PB_DS_TRIE_POLICY_HPP
-
-#include <string>
-#include <ext/pb_ds/detail/type_utils.hpp>
-#include <ext/pb_ds/detail/trie_policy/trie_policy_base.hpp>
-
-namespace __gnu_pbds
-{
- // A null node updator, indicating that no node updates are required.
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename E_Access_Traits,
- typename Allocator>
- struct null_trie_node_update
- { };
-
-#define PB_DS_CLASS_T_DEC \
- template<typename String, typename String::value_type Min_E_Val, typename String::value_type Max_E_Val, bool Reverse, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- string_trie_e_access_traits<String, Min_E_Val,Max_E_Val,Reverse,Allocator>
-
- // Element access traits for string types.
- template<typename String = std::string,
- typename String::value_type Min_E_Val = detail::__numeric_traits<typename String::value_type>::__min,
- typename String::value_type Max_E_Val = detail::__numeric_traits<typename String::value_type>::__max,
- bool Reverse = false,
- typename Allocator = std::allocator<char> >
- struct string_trie_e_access_traits
- {
- public:
- typedef typename Allocator::size_type size_type;
- typedef String key_type;
- typedef typename Allocator::template rebind<key_type>::other key_rebind;
- typedef typename key_rebind::const_reference const_key_reference;
-
- enum
- {
- reverse = Reverse
- };
-
- // Element const iterator type.
- typedef typename detail::__conditional_type<Reverse, typename String::const_reverse_iterator, typename String::const_iterator>::__type const_iterator;
-
- // Element type.
- typedef typename std::iterator_traits<const_iterator>::value_type e_type;
-
- enum
- {
- min_e_val = Min_E_Val,
- max_e_val = Max_E_Val,
- max_size = max_e_val - min_e_val + 1
- };
- PB_DS_STATIC_ASSERT(min_max_size, max_size >= 2);
-
- // Returns a const_iterator to the first element of
- // const_key_reference agumnet.
- inline static const_iterator
- begin(const_key_reference);
-
- // Returns a const_iterator to the after-last element of
- // const_key_reference argument.
- inline static const_iterator
- end(const_key_reference);
-
- // Maps an element to a position.
- inline static size_type
- e_pos(e_type e);
-
- private:
-
- inline static const_iterator
- begin_imp(const_key_reference, detail::false_type);
-
- inline static const_iterator
- begin_imp(const_key_reference, detail::true_type);
-
- inline static const_iterator
- end_imp(const_key_reference, detail::false_type);
-
- inline static const_iterator
- end_imp(const_key_reference, detail::true_type);
-
- static detail::integral_constant<int, Reverse> s_rev_ind;
- };
-
-#include <ext/pb_ds/detail/trie_policy/string_trie_e_access_traits_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_T_DEC \
- template<typename Const_Node_Iterator,typename Node_Iterator,class E_Access_Traits, typename Allocator>
-
-#define PB_DS_CLASS_C_DEC \
- trie_prefix_search_node_update<Const_Node_Iterator, Node_Iterator, E_Access_Traits,Allocator>
-
-#define PB_DS_BASE_C_DEC \
- detail::trie_policy_base<Const_Node_Iterator,Node_Iterator,E_Access_Traits, Allocator>
-
- // A node updator that allows tries to be searched for the range of
- // values that match a certain prefix.
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename E_Access_Traits,
- typename Allocator>
- class trie_prefix_search_node_update : private PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef typename base_type::key_type key_type;
- typedef typename base_type::const_key_reference const_key_reference;
-
- // Element access traits.
- typedef E_Access_Traits e_access_traits;
-
- // Const element iterator.
- typedef typename e_access_traits::const_iterator const_e_iterator;
-
- // Allocator type.
- typedef Allocator allocator_type;
-
- // Size type.
- typedef typename allocator_type::size_type size_type;
- typedef detail::null_node_metadata metadata_type;
- typedef Const_Node_Iterator const_node_iterator;
- typedef Node_Iterator node_iterator;
- typedef typename const_node_iterator::value_type const_iterator;
- typedef typename node_iterator::value_type iterator;
-
- // Finds the const iterator range corresponding to all values
- // whose prefixes match r_key.
- std::pair<const_iterator, const_iterator>
- prefix_range(const_key_reference) const;
-
- // Finds the iterator range corresponding to all values whose
- // prefixes match r_key.
- std::pair<iterator, iterator>
- prefix_range(const_key_reference);
-
- // Finds the const iterator range corresponding to all values
- // whose prefixes match [b, e).
- std::pair<const_iterator, const_iterator>
- prefix_range(const_e_iterator, const_e_iterator) const;
-
- // Finds the iterator range corresponding to all values whose
- // prefixes match [b, e).
- std::pair<iterator, iterator>
- prefix_range(const_e_iterator, const_e_iterator);
-
- protected:
- // Called to update a node's metadata.
- inline void
- operator()(node_iterator node_it, const_node_iterator end_nd_it) const;
-
- private:
- // Returns the const iterator associated with the just-after last element.
- virtual const_iterator
- end() const = 0;
-
- // Returns the iterator associated with the just-after last element.
- virtual iterator
- end() = 0;
-
- // Returns the const_node_iterator associated with the trie's root node.
- virtual const_node_iterator
- node_begin() const = 0;
-
- // Returns the node_iterator associated with the trie's root node.
- virtual node_iterator
- node_begin() = 0;
-
- // Returns the const_node_iterator associated with a just-after leaf node.
- virtual const_node_iterator
- node_end() const = 0;
-
- // Returns the node_iterator associated with a just-after leaf node.
- virtual node_iterator
- node_end() = 0;
-
- // Access to the cmp_fn object.
- virtual const e_access_traits&
- get_e_access_traits() const = 0;
-
- node_iterator
- next_child(node_iterator, const_e_iterator, const_e_iterator,
- node_iterator, const e_access_traits&);
- };
-
-#include <ext/pb_ds/detail/trie_policy/prefix_search_node_update_imp.hpp>
-
-#undef PB_DS_CLASS_C_DEC
-
-#define PB_DS_CLASS_C_DEC \
- trie_order_statistics_node_update<Const_Node_Iterator, Node_Iterator,E_Access_Traits, Allocator>
-
- // Functor updating ranks of entrees.
- template<typename Const_Node_Iterator,
- typename Node_Iterator,
- typename E_Access_Traits,
- typename Allocator>
- class trie_order_statistics_node_update : private PB_DS_BASE_C_DEC
- {
- private:
- typedef PB_DS_BASE_C_DEC base_type;
-
- public:
- typedef E_Access_Traits e_access_traits;
- typedef typename e_access_traits::const_iterator const_e_iterator;
- typedef Allocator allocator_type;
- typedef typename allocator_type::size_type size_type;
- typedef typename base_type::key_type key_type;
- typedef typename base_type::const_key_reference const_key_reference;
-
- typedef size_type metadata_type;
- typedef Const_Node_Iterator const_node_iterator;
- typedef Node_Iterator node_iterator;
- typedef typename const_node_iterator::value_type const_iterator;
- typedef typename node_iterator::value_type iterator;
-
- // Finds an entry by __order. Returns a const_iterator to the
- // entry with the __order order, or a const_iterator to the
- // container object's end if order is at least the size of the
- // container object.
- inline const_iterator
- find_by_order(size_type) const;
-
- // Finds an entry by __order. Returns an iterator to the entry
- // with the __order order, or an iterator to the container
- // object's end if order is at least the size of the container
- // object.
- inline iterator
- find_by_order(size_type);
-
- // Returns the order of a key within a sequence. For exapmle, if
- // r_key is the smallest key, this method will return 0; if r_key
- // is a key between the smallest and next key, this method will
- // return 1; if r_key is a key larger than the largest key, this
- // method will return the size of r_c.
- inline size_type
- order_of_key(const_key_reference) const;
-
- // Returns the order of a prefix within a sequence. For exapmle,
- // if [b, e] is the smallest prefix, this method will return 0; if
- // r_key is a key between the smallest and next key, this method
- // will return 1; if r_key is a key larger than the largest key,
- // this method will return the size of r_c.
- inline size_type
- order_of_prefix(const_e_iterator, const_e_iterator) const;
-
- private:
- typedef typename base_type::const_reference const_reference;
- typedef typename base_type::const_pointer const_pointer;
-
- typedef typename Allocator::template rebind<metadata_type>::other metadata_rebind;
- typedef typename metadata_rebind::const_reference const_metadata_reference;
- typedef typename metadata_rebind::reference metadata_reference;
-
- // Returns true if the container is empty.
- virtual bool
- empty() const = 0;
-
- // Returns the iterator associated with the trie's first element.
- virtual iterator
- begin() = 0;
-
- // Returns the iterator associated with the trie's
- // just-after-last element.
- virtual iterator
- end() = 0;
-
- // Returns the const_node_iterator associated with the trie's root node.
- virtual const_node_iterator
- node_begin() const = 0;
-
- // Returns the node_iterator associated with the trie's root node.
- virtual node_iterator
- node_begin() = 0;
-
- // Returns the const_node_iterator associated with a just-after
- // leaf node.
- virtual const_node_iterator
- node_end() const = 0;
-
- // Returns the node_iterator associated with a just-after leaf node.
- virtual node_iterator
- node_end() = 0;
-
- // Access to the cmp_fn object.
- virtual e_access_traits&
- get_e_access_traits() = 0;
-
- protected:
- // Updates the rank of a node through a node_iterator node_it;
- // end_nd_it is the end node iterator.
- inline void
- operator()(node_iterator, const_node_iterator) const;
-
- // Destructor.
- virtual
- ~trie_order_statistics_node_update();
- };
-
-#include <ext/pb_ds/detail/trie_policy/order_statistics_imp.hpp>
-
-#undef PB_DS_CLASS_T_DEC
-#undef PB_DS_CLASS_C_DEC
-#undef PB_DS_BASE_C_DEC
-
-} // namespace __gnu_pbds
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pod_char_traits.h b/gcc-4.4.3/libstdc++-v3/include/ext/pod_char_traits.h
deleted file mode 100644
index 2797c1bf2..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pod_char_traits.h
+++ /dev/null
@@ -1,182 +0,0 @@
-// POD character, std::char_traits specialization -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2005, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/pod_char_traits.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-// Gabriel Dos Reis <gdr@integrable-solutions.net>
-// Benjamin Kosnik <bkoz@redhat.com>
-
-#ifndef _POD_CHAR_TRAITS_H
-#define _POD_CHAR_TRAITS_H 1
-
-#include <string>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // POD character abstraction.
- // NB: The char_type parameter is a subset of int_type, as to allow
- // int_type to properly hold the full range of char_type values as
- // well as EOF.
- /// @brief A POD class that serves as a character abstraction class.
- template<typename V, typename I, typename S = std::mbstate_t>
- struct character
- {
- typedef V value_type;
- typedef I int_type;
- typedef S state_type;
- typedef character<V, I, S> char_type;
-
- value_type value;
-
- template<typename V2>
- static char_type
- from(const V2& v)
- {
- char_type ret = { static_cast<value_type>(v) };
- return ret;
- }
-
- template<typename V2>
- static V2
- to(const char_type& c)
- {
- V2 ret = { static_cast<V2>(c.value) };
- return ret;
- }
-
- };
-
- template<typename V, typename I, typename S>
- inline bool
- operator==(const character<V, I, S>& lhs, const character<V, I, S>& rhs)
- { return lhs.value == rhs.value; }
-
- template<typename V, typename I, typename S>
- inline bool
- operator<(const character<V, I, S>& lhs, const character<V, I, S>& rhs)
- { return lhs.value < rhs.value; }
-
-_GLIBCXX_END_NAMESPACE
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- /// char_traits<__gnu_cxx::character> specialization.
- template<typename V, typename I, typename S>
- struct char_traits<__gnu_cxx::character<V, I, S> >
- {
- typedef __gnu_cxx::character<V, I, S> char_type;
- typedef typename char_type::int_type int_type;
- typedef typename char_type::state_type state_type;
- typedef fpos<state_type> pos_type;
- typedef streamoff off_type;
-
- static void
- assign(char_type& __c1, const char_type& __c2)
- { __c1 = __c2; }
-
- static bool
- eq(const char_type& __c1, const char_type& __c2)
- { return __c1 == __c2; }
-
- static bool
- lt(const char_type& __c1, const char_type& __c2)
- { return __c1 < __c2; }
-
- static int
- compare(const char_type* __s1, const char_type* __s2, size_t __n)
- {
- for (size_t __i = 0; __i < __n; ++__i)
- if (!eq(__s1[__i], __s2[__i]))
- return lt(__s1[__i], __s2[__i]) ? -1 : 1;
- return 0;
- }
-
- static size_t
- length(const char_type* __s)
- {
- const char_type* __p = __s;
- while (__p->value)
- ++__p;
- return (__p - __s);
- }
-
- static const char_type*
- find(const char_type* __s, size_t __n, const char_type& __a)
- {
- for (const char_type* __p = __s; size_t(__p - __s) < __n; ++__p)
- if (*__p == __a)
- return __p;
- return 0;
- }
-
- static char_type*
- move(char_type* __s1, const char_type* __s2, size_t __n)
- {
- return static_cast<char_type*>
- (__builtin_memmove(__s1, __s2, __n * sizeof(char_type)));
- }
-
- static char_type*
- copy(char_type* __s1, const char_type* __s2, size_t __n)
- {
- std::copy(__s2, __s2 + __n, __s1);
- return __s1;
- }
-
- static char_type*
- assign(char_type* __s, size_t __n, char_type __a)
- {
- std::fill_n(__s, __n, __a);
- return __s;
- }
-
- static char_type
- to_char_type(const int_type& __i)
- { return char_type::template from(__i); }
-
- static int_type
- to_int_type(const char_type& __c)
- { return char_type::template to<int_type>(__c); }
-
- static bool
- eq_int_type(const int_type& __c1, const int_type& __c2)
- { return __c1 == __c2; }
-
- static int_type
- eof()
- {
- int_type __r = { -1 };
- return __r;
- }
-
- static int_type
- not_eof(const int_type& __c)
- { return eq_int_type(__c, eof()) ? int_type() : __c; }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pointer.h b/gcc-4.4.3/libstdc++-v3/include/ext/pointer.h
deleted file mode 100644
index 5aac7f178..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pointer.h
+++ /dev/null
@@ -1,551 +0,0 @@
-// Custom pointer adapter and sample storage policies
-
-// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/**
- * @file ext/pointer.h
- * @author Bob Walters
- *
- * Provides reusable _Pointer_adapter for assisting in the development of
- * custom pointer types that can be used with the standard containers via
- * the allocator::pointer and allocator::const_pointer typedefs.
- */
-
-#ifndef _POINTER_H
-#define _POINTER_H 1
-
-#include <iosfwd>
-#include <bits/stl_iterator_base_types.h>
-#include <ext/cast.h>
-#include <ext/type_traits.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /**
- * @brief A storage policy for use with _Pointer_adapter<> which yields a
- * standard pointer.
- *
- * A _Storage_policy is required to provide 4 things:
- * 1) A get() API for returning the stored pointer value.
- * 2) An set() API for storing a pointer value.
- * 3) An element_type typedef to define the type this points to.
- * 4) An operator<() to support pointer comparison.
- * 5) An operator==() to support pointer comparison.
- */
- template<typename _Tp>
- class _Std_pointer_impl
- {
- public:
- // the type this pointer points to.
- typedef _Tp element_type;
-
- // A method to fetch the pointer value as a standard T* value;
- inline _Tp*
- get() const
- { return _M_value; }
-
- // A method to set the pointer value, from a standard T* value;
- inline void
- set(element_type* __arg)
- { _M_value = __arg; }
-
- // Comparison of pointers
- inline bool
- operator<(const _Std_pointer_impl& __rarg) const
- { return (_M_value < __rarg._M_value); }
-
- inline bool
- operator==(const _Std_pointer_impl& __rarg) const
- { return (_M_value == __rarg._M_value); }
-
- private:
- element_type* _M_value;
- };
-
- /**
- * @brief A storage policy for use with _Pointer_adapter<> which stores
- * the pointer's address as an offset value which is relative to
- * its own address.
- *
- * This is intended for pointers
- * within shared memory regions which might be mapped at different
- * addresses by different processes. For null pointers, a value of 1 is
- * used. (0 is legitimate sometimes for nodes in circularly linked lists)
- * This value was chosen as the least likely to generate an incorrect null,
- * As there is no reason why any normal pointer would point 1 byte into
- * its own pointer address.
- */
- template<typename _Tp>
- class _Relative_pointer_impl
- {
- public:
- typedef _Tp element_type;
-
- _Tp*
- get() const
- {
- if (_M_diff == 1)
- return 0;
- else
- return reinterpret_cast<_Tp*>(reinterpret_cast<_UIntPtrType>(this)
- + _M_diff);
- }
-
- void
- set(_Tp* __arg)
- {
- if (!__arg)
- _M_diff = 1;
- else
- _M_diff = reinterpret_cast<_UIntPtrType>(__arg)
- - reinterpret_cast<_UIntPtrType>(this);
- }
-
- // Comparison of pointers
- inline bool
- operator<(const _Relative_pointer_impl& __rarg) const
- { return (reinterpret_cast<_UIntPtrType>(this->get())
- < reinterpret_cast<_UIntPtrType>(__rarg.get())); }
-
- inline bool
- operator==(const _Relative_pointer_impl& __rarg) const
- { return (reinterpret_cast<_UIntPtrType>(this->get())
- == reinterpret_cast<_UIntPtrType>(__rarg.get())); }
-
- private:
- typedef __gnu_cxx::__conditional_type<
- (sizeof(unsigned long) >= sizeof(void*)),
- unsigned long, unsigned long long>::__type _UIntPtrType;
- _UIntPtrType _M_diff;
- };
-
- /**
- * Relative_pointer_impl needs a specialization for const T because of
- * the casting done during pointer arithmetic.
- */
- template<typename _Tp>
- class _Relative_pointer_impl<const _Tp>
- {
- public:
- typedef const _Tp element_type;
-
- const _Tp*
- get() const
- {
- if (_M_diff == 1)
- return 0;
- else
- return reinterpret_cast<const _Tp*>
- (reinterpret_cast<_UIntPtrType>(this) + _M_diff);
- }
-
- void
- set(const _Tp* __arg)
- {
- if (!__arg)
- _M_diff = 1;
- else
- _M_diff = reinterpret_cast<_UIntPtrType>(__arg)
- - reinterpret_cast<_UIntPtrType>(this);
- }
-
- // Comparison of pointers
- inline bool
- operator<(const _Relative_pointer_impl& __rarg) const
- { return (reinterpret_cast<_UIntPtrType>(this->get())
- < reinterpret_cast<_UIntPtrType>(__rarg.get())); }
-
- inline bool
- operator==(const _Relative_pointer_impl& __rarg) const
- { return (reinterpret_cast<_UIntPtrType>(this->get())
- == reinterpret_cast<_UIntPtrType>(__rarg.get())); }
-
- private:
- typedef __gnu_cxx::__conditional_type
- <(sizeof(unsigned long) >= sizeof(void*)),
- unsigned long, unsigned long long>::__type _UIntPtrType;
- _UIntPtrType _M_diff;
- };
-
- /**
- * The specialization on this type helps resolve the problem of
- * reference to void, and eliminates the need to specialize _Pointer_adapter
- * for cases of void*, const void*, and so on.
- */
- struct _Invalid_type { };
-
- template<typename _Tp>
- struct _Reference_type
- { typedef _Tp& reference; };
-
- template<>
- struct _Reference_type<void>
- { typedef _Invalid_type& reference; };
-
- template<>
- struct _Reference_type<const void>
- { typedef const _Invalid_type& reference; };
-
- template<>
- struct _Reference_type<volatile void>
- { typedef volatile _Invalid_type& reference; };
-
- template<>
- struct _Reference_type<volatile const void>
- { typedef const volatile _Invalid_type& reference; };
-
- /**
- * This structure accomodates the way in which std::iterator_traits<>
- * is normally specialized for const T*, so that value_type is still T.
- */
- template<typename _Tp>
- struct _Unqualified_type
- { typedef _Tp type; };
-
- template<typename _Tp>
- struct _Unqualified_type<const _Tp>
- { typedef _Tp type; };
-
- template<typename _Tp>
- struct _Unqualified_type<volatile _Tp>
- { typedef volatile _Tp type; };
-
- template<typename _Tp>
- struct _Unqualified_type<volatile const _Tp>
- { typedef volatile _Tp type; };
-
- /**
- * The following provides an 'alternative pointer' that works with the
- * containers when specified as the pointer typedef of the allocator.
- *
- * The pointer type used with the containers doesn't have to be this class,
- * but it must support the implicit conversions, pointer arithmetic,
- * comparison operators, etc. that are supported by this class, and avoid
- * raising compile-time ambiguities. Because creating a working pointer can
- * be challenging, this pointer template was designed to wrapper an
- * easier storage policy type, so that it becomes reusable for creating
- * other pointer types.
- *
- * A key point of this class is also that it allows container writers to
- * 'assume' Alocator::pointer is a typedef for a normal pointer. This class
- * supports most of the conventions of a true pointer, and can, for instance
- * handle implicit conversion to const and base class pointer types. The
- * only impositions on container writers to support extended pointers are:
- * 1) use the Allocator::pointer typedef appropriately for pointer types.
- * 2) if you need pointer casting, use the __pointer_cast<> functions
- * from ext/cast.h. This allows pointer cast operations to be overloaded
- * is necessary by custom pointers.
- *
- * Note: The const qualifier works with this pointer adapter as follows:
- *
- * _Tp* == _Pointer_adapter<_Std_pointer_impl<_Tp> >;
- * const _Tp* == _Pointer_adapter<_Std_pointer_impl<const _Tp> >;
- * _Tp* const == const _Pointer_adapter<_Std_pointer_impl<_Tp> >;
- * const _Tp* const == const _Pointer_adapter<_Std_pointer_impl<const _Tp> >;
- */
- template<typename _Storage_policy>
- class _Pointer_adapter : public _Storage_policy
- {
- public:
- typedef typename _Storage_policy::element_type element_type;
-
- // These are needed for iterator_traits
- typedef std::random_access_iterator_tag iterator_category;
- typedef typename _Unqualified_type<element_type>::type value_type;
- typedef std::ptrdiff_t difference_type;
- typedef _Pointer_adapter pointer;
- typedef typename _Reference_type<element_type>::reference reference;
-
- // Reminder: 'const' methods mean that the method is valid when the
- // pointer is immutable, and has nothing to do with whether the
- // 'pointee' is const.
-
- // Default Constructor (Convert from element_type*)
- _Pointer_adapter(element_type* __arg = 0)
- { _Storage_policy::set(__arg); }
-
- // Copy constructor from _Pointer_adapter of same type.
- _Pointer_adapter(const _Pointer_adapter& __arg)
- { _Storage_policy::set(__arg.get()); }
-
- // Convert from _Up* if conversion to element_type* is valid.
- template<typename _Up>
- _Pointer_adapter(_Up* __arg)
- { _Storage_policy::set(__arg); }
-
- // Conversion from another _Pointer_adapter if _Up if static cast is
- // valid.
- template<typename _Up>
- _Pointer_adapter(const _Pointer_adapter<_Up>& __arg)
- { _Storage_policy::set(__arg.get()); }
-
- // Destructor
- ~_Pointer_adapter() { }
-
- // Assignment operator
- _Pointer_adapter&
- operator=(const _Pointer_adapter& __arg)
- {
- _Storage_policy::set(__arg.get());
- return *this;
- }
-
- template<typename _Up>
- _Pointer_adapter&
- operator=(const _Pointer_adapter<_Up>& __arg)
- {
- _Storage_policy::set(__arg.get());
- return *this;
- }
-
- template<typename _Up>
- _Pointer_adapter&
- operator=(_Up* __arg)
- {
- _Storage_policy::set(__arg);
- return *this;
- }
-
- // Operator*, returns element_type&
- inline reference
- operator*() const
- { return *(_Storage_policy::get()); }
-
- // Operator->, returns element_type*
- inline element_type*
- operator->() const
- { return _Storage_policy::get(); }
-
- // Operator[], returns a element_type& to the item at that loc.
- inline reference
- operator[](std::ptrdiff_t __index) const
- { return _Storage_policy::get()[__index]; }
-
- // To allow implicit conversion to "bool", for "if (ptr)..."
- private:
- typedef element_type*(_Pointer_adapter::*__unspecified_bool_type)() const;
-
- public:
- operator __unspecified_bool_type() const
- {
- return _Storage_policy::get() == 0 ? 0 :
- &_Pointer_adapter::operator->;
- }
-
- // ! operator (for: if (!ptr)...)
- inline bool
- operator!() const
- { return (_Storage_policy::get() == 0); }
-
- // Pointer differences
- inline friend std::ptrdiff_t
- operator-(const _Pointer_adapter& __lhs, element_type* __rhs)
- { return (__lhs.get() - __rhs); }
-
- inline friend std::ptrdiff_t
- operator-(element_type* __lhs, const _Pointer_adapter& __rhs)
- { return (__lhs - __rhs.get()); }
-
- template<typename _Up>
- inline friend std::ptrdiff_t
- operator-(const _Pointer_adapter& __lhs, _Up* __rhs)
- { return (__lhs.get() - __rhs); }
-
- template<typename _Up>
- inline friend std::ptrdiff_t
- operator-(_Up* __lhs, const _Pointer_adapter& __rhs)
- { return (__lhs - __rhs.get()); }
-
- template<typename _Up>
- inline std::ptrdiff_t
- operator-(const _Pointer_adapter<_Up>& __rhs) const
- { return (_Storage_policy::get() - __rhs.get()); }
-
- // Pointer math
- // Note: There is a reason for all this overloading based on different
- // integer types. In some libstdc++-v3 test cases, a templated
- // operator+ is declared which can match any types. This operator
- // tends to "steal" the recognition of _Pointer_adapter's own operator+
- // unless the integer type matches perfectly.
-
-#define _CXX_POINTER_ARITH_OPERATOR_SET(INT_TYPE) \
- inline friend _Pointer_adapter \
- operator+(const _Pointer_adapter& __lhs, INT_TYPE __offset) \
- { return _Pointer_adapter(__lhs.get() + __offset); } \
-\
- inline friend _Pointer_adapter \
- operator+(INT_TYPE __offset, const _Pointer_adapter& __rhs) \
- { return _Pointer_adapter(__rhs.get() + __offset); } \
-\
- inline friend _Pointer_adapter \
- operator-(const _Pointer_adapter& __lhs, INT_TYPE __offset) \
- { return _Pointer_adapter(__lhs.get() - __offset); } \
-\
- inline _Pointer_adapter& \
- operator+=(INT_TYPE __offset) \
- { \
- _Storage_policy::set(_Storage_policy::get() + __offset); \
- return *this; \
- } \
-\
- inline _Pointer_adapter& \
- operator-=(INT_TYPE __offset) \
- { \
- _Storage_policy::set(_Storage_policy::get() - __offset); \
- return *this; \
- } \
-// END of _CXX_POINTER_ARITH_OPERATOR_SET macro
-
- // Expand into the various pointer arithmatic operators needed.
- _CXX_POINTER_ARITH_OPERATOR_SET(short);
- _CXX_POINTER_ARITH_OPERATOR_SET(unsigned short);
- _CXX_POINTER_ARITH_OPERATOR_SET(int);
- _CXX_POINTER_ARITH_OPERATOR_SET(unsigned int);
- _CXX_POINTER_ARITH_OPERATOR_SET(long);
- _CXX_POINTER_ARITH_OPERATOR_SET(unsigned long);
-
- // Mathematical Manipulators
- inline _Pointer_adapter&
- operator++()
- {
- _Storage_policy::set(_Storage_policy::get() + 1);
- return *this;
- }
-
- inline _Pointer_adapter
- operator++(int __unused)
- {
- _Pointer_adapter tmp(*this);
- _Storage_policy::set(_Storage_policy::get() + 1);
- return tmp;
- }
-
- inline _Pointer_adapter&
- operator--()
- {
- _Storage_policy::set(_Storage_policy::get() - 1);
- return *this;
- }
-
- inline _Pointer_adapter
- operator--(int)
- {
- _Pointer_adapter tmp(*this);
- _Storage_policy::set(_Storage_policy::get() - 1);
- return tmp;
- }
-
- }; // class _Pointer_adapter
-
-
-#define _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(OPERATOR,BLANK) \
- template<typename _Tp1, typename _Tp2> \
- inline bool \
- operator OPERATOR##BLANK (const _Pointer_adapter<_Tp1>& __lhs, _Tp2 __rhs) \
- { return __lhs.get() OPERATOR##BLANK __rhs; } \
-\
- template<typename _Tp1, typename _Tp2> \
- inline bool \
- operator OPERATOR##BLANK (_Tp1 __lhs, const _Pointer_adapter<_Tp2>& __rhs) \
- { return __lhs OPERATOR##BLANK __rhs.get(); } \
-\
- template<typename _Tp1, typename _Tp2> \
- inline bool \
- operator OPERATOR##BLANK (const _Pointer_adapter<_Tp1>& __lhs, \
- const _Pointer_adapter<_Tp2>& __rhs) \
- { return __lhs.get() OPERATOR##BLANK __rhs.get(); } \
-\
-// End GCC_CXX_POINTER_COMPARISON_OPERATION_SET Macro
-
- // Expand into the various comparison operators needed.
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(==,);
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(!=,);
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(<,);
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(<=,);
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(>,);
- _GCC_CXX_POINTER_COMPARISON_OPERATION_SET(>=,);
-
- // These are here for expressions like "ptr == 0", "ptr != 0"
- template<typename _Tp>
- inline bool
- operator==(const _Pointer_adapter<_Tp>& __lhs, int __rhs)
- { return __lhs.get() == reinterpret_cast<void*>(__rhs); }
-
- template<typename _Tp>
- inline bool
- operator==(int __lhs, const _Pointer_adapter<_Tp>& __rhs)
- { return __rhs.get() == reinterpret_cast<void*>(__lhs); }
-
- template<typename _Tp>
- inline bool
- operator!=(const _Pointer_adapter<_Tp>& __lhs, int __rhs)
- { return __lhs.get() != reinterpret_cast<void*>(__rhs); }
-
- template<typename _Tp>
- inline bool
- operator!=(int __lhs, const _Pointer_adapter<_Tp>& __rhs)
- { return __rhs.get() != reinterpret_cast<void*>(__lhs); }
-
- /**
- * Comparison operators for _Pointer_adapter defer to the base class'es
- * comparison operators, when possible.
- */
- template<typename _Tp>
- inline bool
- operator==(const _Pointer_adapter<_Tp>& __lhs,
- const _Pointer_adapter<_Tp>& __rhs)
- { return __lhs._Tp::operator==(__rhs); }
-
- template<typename _Tp>
- inline bool
- operator<=(const _Pointer_adapter<_Tp>& __lhs,
- const _Pointer_adapter<_Tp>& __rhs)
- { return __lhs._Tp::operator<(__rhs) || __lhs._Tp::operator==(__rhs); }
-
- template<typename _Tp>
- inline bool
- operator!=(const _Pointer_adapter<_Tp>& __lhs,
- const _Pointer_adapter<_Tp>& __rhs)
- { return !(__lhs._Tp::operator==(__rhs)); }
-
- template<typename _Tp>
- inline bool
- operator>(const _Pointer_adapter<_Tp>& __lhs,
- const _Pointer_adapter<_Tp>& __rhs)
- { return !(__lhs._Tp::operator<(__rhs) || __lhs._Tp::operator==(__rhs)); }
-
- template<typename _Tp>
- inline bool
- operator>=(const _Pointer_adapter<_Tp>& __lhs,
- const _Pointer_adapter<_Tp>& __rhs)
- { return !(__lhs._Tp::operator<(__rhs)); }
-
- template<typename _CharT, typename _Traits, typename _StoreT>
- inline std::basic_ostream<_CharT, _Traits>&
- operator<<(std::basic_ostream<_CharT, _Traits>& __os,
- const _Pointer_adapter<_StoreT>& __p)
- { return (__os << __p.get()); }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif // _POINTER_H
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/pool_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/pool_allocator.h
deleted file mode 100644
index 87d145d71..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/pool_allocator.h
+++ /dev/null
@@ -1,263 +0,0 @@
-// Allocators -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- * Copyright (c) 1996-1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/pool_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _POOL_ALLOCATOR_H
-#define _POOL_ALLOCATOR_H 1
-
-#include <bits/c++config.h>
-#include <cstdlib>
-#include <new>
-#include <bits/functexcept.h>
-#include <ext/atomicity.h>
-#include <ext/concurrence.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
-
- /**
- * @brief Base class for __pool_alloc.
- *
- * Uses various allocators to fulfill underlying requests (and makes as
- * few requests as possible when in default high-speed pool mode).
- *
- * Important implementation properties:
- * 0. If globally mandated, then allocate objects from new
- * 1. If the clients request an object of size > _S_max_bytes, the resulting
- * object will be obtained directly from new
- * 2. In all other cases, we allocate an object of size exactly
- * _S_round_up(requested_size). Thus the client has enough size
- * information that we can return the object to the proper free list
- * without permanently losing part of the object.
- */
- class __pool_alloc_base
- {
- protected:
-
- enum { _S_align = 8 };
- enum { _S_max_bytes = 128 };
- enum { _S_free_list_size = (size_t)_S_max_bytes / (size_t)_S_align };
-
- union _Obj
- {
- union _Obj* _M_free_list_link;
- char _M_client_data[1]; // The client sees this.
- };
-
- static _Obj* volatile _S_free_list[_S_free_list_size];
-
- // Chunk allocation state.
- static char* _S_start_free;
- static char* _S_end_free;
- static size_t _S_heap_size;
-
- size_t
- _M_round_up(size_t __bytes)
- { return ((__bytes + (size_t)_S_align - 1) & ~((size_t)_S_align - 1)); }
-
- _Obj* volatile*
- _M_get_free_list(size_t __bytes);
-
- __mutex&
- _M_get_mutex();
-
- // Returns an object of size __n, and optionally adds to size __n
- // free list.
- void*
- _M_refill(size_t __n);
-
- // Allocates a chunk for nobjs of size size. nobjs may be reduced
- // if it is inconvenient to allocate the requested number.
- char*
- _M_allocate_chunk(size_t __n, int& __nobjs);
- };
-
-
- /**
- * @brief Allocator using a memory pool with a single lock.
- * @ingroup allocators
- */
- template<typename _Tp>
- class __pool_alloc : private __pool_alloc_base
- {
- private:
- static _Atomic_word _S_force_new;
-
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef _Tp* pointer;
- typedef const _Tp* const_pointer;
- typedef _Tp& reference;
- typedef const _Tp& const_reference;
- typedef _Tp value_type;
-
- template<typename _Tp1>
- struct rebind
- { typedef __pool_alloc<_Tp1> other; };
-
- __pool_alloc() throw() { }
-
- __pool_alloc(const __pool_alloc&) throw() { }
-
- template<typename _Tp1>
- __pool_alloc(const __pool_alloc<_Tp1>&) throw() { }
-
- ~__pool_alloc() throw() { }
-
- pointer
- address(reference __x) const { return &__x; }
-
- const_pointer
- address(const_reference __x) const { return &__x; }
-
- size_type
- max_size() const throw()
- { return size_t(-1) / sizeof(_Tp); }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 402. wrong new expression in [some_] allocator::construct
- void
- construct(pointer __p, const _Tp& __val)
- { ::new((void *)__p) _Tp(__val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- { ::new((void *)__p) _Tp(std::forward<_Args>(__args)...); }
-#endif
-
- void
- destroy(pointer __p) { __p->~_Tp(); }
-
- pointer
- allocate(size_type __n, const void* = 0);
-
- void
- deallocate(pointer __p, size_type __n);
- };
-
- template<typename _Tp>
- inline bool
- operator==(const __pool_alloc<_Tp>&, const __pool_alloc<_Tp>&)
- { return true; }
-
- template<typename _Tp>
- inline bool
- operator!=(const __pool_alloc<_Tp>&, const __pool_alloc<_Tp>&)
- { return false; }
-
- template<typename _Tp>
- _Atomic_word
- __pool_alloc<_Tp>::_S_force_new;
-
- template<typename _Tp>
- _Tp*
- __pool_alloc<_Tp>::allocate(size_type __n, const void*)
- {
- pointer __ret = 0;
- if (__builtin_expect(__n != 0, true))
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- // If there is a race through here, assume answer from getenv
- // will resolve in same direction. Inspired by techniques
- // to efficiently support threading found in basic_string.h.
- if (_S_force_new == 0)
- {
- if (std::getenv("GLIBCXX_FORCE_NEW"))
- __atomic_add_dispatch(&_S_force_new, 1);
- else
- __atomic_add_dispatch(&_S_force_new, -1);
- }
-
- const size_t __bytes = __n * sizeof(_Tp);
- if (__bytes > size_t(_S_max_bytes) || _S_force_new > 0)
- __ret = static_cast<_Tp*>(::operator new(__bytes));
- else
- {
- _Obj* volatile* __free_list = _M_get_free_list(__bytes);
-
- __scoped_lock sentry(_M_get_mutex());
- _Obj* __restrict__ __result = *__free_list;
- if (__builtin_expect(__result == 0, 0))
- __ret = static_cast<_Tp*>(_M_refill(_M_round_up(__bytes)));
- else
- {
- *__free_list = __result->_M_free_list_link;
- __ret = reinterpret_cast<_Tp*>(__result);
- }
- if (__builtin_expect(__ret == 0, 0))
- std::__throw_bad_alloc();
- }
- }
- return __ret;
- }
-
- template<typename _Tp>
- void
- __pool_alloc<_Tp>::deallocate(pointer __p, size_type __n)
- {
- if (__builtin_expect(__n != 0 && __p != 0, true))
- {
- const size_t __bytes = __n * sizeof(_Tp);
- if (__bytes > static_cast<size_t>(_S_max_bytes) || _S_force_new > 0)
- ::operator delete(__p);
- else
- {
- _Obj* volatile* __free_list = _M_get_free_list(__bytes);
- _Obj* __q = reinterpret_cast<_Obj*>(__p);
-
- __scoped_lock sentry(_M_get_mutex());
- __q ->_M_free_list_link = *__free_list;
- *__free_list = __q;
- }
- }
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/rb_tree b/gcc-4.4.3/libstdc++-v3/include/ext/rb_tree
deleted file mode 100644
index 185d02efe..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/rb_tree
+++ /dev/null
@@ -1,93 +0,0 @@
-// rb_tree extension -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- *
- * Copyright (c) 1994
- * Hewlett-Packard Company
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Hewlett-Packard Company makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- *
- * Copyright (c) 1996
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/rb_tree
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _RB_TREE
-#define _RB_TREE 1
-
-#pragma GCC system_header
-
-#include <bits/stl_tree.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::_Rb_tree;
- using std::allocator;
-
- // Class rb_tree is not part of the C++ standard. It is provided for
- // compatibility with the HP STL.
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template <class _Key, class _Value, class _KeyOfValue, class _Compare,
- class _Alloc = allocator<_Value> >
- struct rb_tree
- : public _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc>
- {
- typedef _Rb_tree<_Key, _Value, _KeyOfValue, _Compare, _Alloc> _Base;
- typedef typename _Base::allocator_type allocator_type;
-
- rb_tree(const _Compare& __comp = _Compare(),
- const allocator_type& __a = allocator_type())
- : _Base(__comp, __a) { }
-
- ~rb_tree() { }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/rc_string_base.h b/gcc-4.4.3/libstdc++-v3/include/ext/rc_string_base.h
deleted file mode 100644
index dce5e0671..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/rc_string_base.h
+++ /dev/null
@@ -1,718 +0,0 @@
-// Reference-counted versatile string base -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/rc_string_base.h
- * This file is a GNU extension to the Standard C++ Library.
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _RC_STRING_BASE_H
-#define _RC_STRING_BASE_H 1
-
-#include <ext/atomicity.h>
-#include <bits/stl_iterator_base_funcs.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /**
- * Documentation? What's that?
- * Nathan Myers <ncm@cantrip.org>.
- *
- * A string looks like this:
- *
- * @code
- * [_Rep]
- * _M_length
- * [__rc_string_base<char_type>] _M_capacity
- * _M_dataplus _M_refcount
- * _M_p ----------------> unnamed array of char_type
- * @endcode
- *
- * Where the _M_p points to the first character in the string, and
- * you cast it to a pointer-to-_Rep and subtract 1 to get a
- * pointer to the header.
- *
- * This approach has the enormous advantage that a string object
- * requires only one allocation. All the ugliness is confined
- * within a single pair of inline functions, which each compile to
- * a single "add" instruction: _Rep::_M_refdata(), and
- * __rc_string_base::_M_rep(); and the allocation function which gets a
- * block of raw bytes and with room enough and constructs a _Rep
- * object at the front.
- *
- * The reason you want _M_data pointing to the character array and
- * not the _Rep is so that the debugger can see the string
- * contents. (Probably we should add a non-inline member to get
- * the _Rep for the debugger to use, so users can check the actual
- * string length.)
- *
- * Note that the _Rep object is a POD so that you can have a
- * static "empty string" _Rep object already "constructed" before
- * static constructors have run. The reference-count encoding is
- * chosen so that a 0 indicates one reference, so you never try to
- * destroy the empty-string _Rep object.
- *
- * All but the last paragraph is considered pretty conventional
- * for a C++ string implementation.
- */
- template<typename _CharT, typename _Traits, typename _Alloc>
- class __rc_string_base
- : protected __vstring_utility<_CharT, _Traits, _Alloc>
- {
- public:
- typedef _Traits traits_type;
- typedef typename _Traits::char_type value_type;
- typedef _Alloc allocator_type;
-
- typedef __vstring_utility<_CharT, _Traits, _Alloc> _Util_Base;
- typedef typename _Util_Base::_CharT_alloc_type _CharT_alloc_type;
- typedef typename _CharT_alloc_type::size_type size_type;
-
- private:
- // _Rep: string representation
- // Invariants:
- // 1. String really contains _M_length + 1 characters: due to 21.3.4
- // must be kept null-terminated.
- // 2. _M_capacity >= _M_length
- // Allocated memory is always (_M_capacity + 1) * sizeof(_CharT).
- // 3. _M_refcount has three states:
- // -1: leaked, one reference, no ref-copies allowed, non-const.
- // 0: one reference, non-const.
- // n>0: n + 1 references, operations require a lock, const.
- // 4. All fields == 0 is an empty string, given the extra storage
- // beyond-the-end for a null terminator; thus, the shared
- // empty string representation needs no constructor.
- struct _Rep
- {
- union
- {
- struct
- {
- size_type _M_length;
- size_type _M_capacity;
- _Atomic_word _M_refcount;
- } _M_info;
-
- // Only for alignment purposes.
- _CharT _M_align;
- };
-
- typedef typename _Alloc::template rebind<_Rep>::other _Rep_alloc_type;
-
- _CharT*
- _M_refdata() throw()
- { return reinterpret_cast<_CharT*>(this + 1); }
-
- _CharT*
- _M_refcopy() throw()
- {
- __atomic_add_dispatch(&_M_info._M_refcount, 1);
- return _M_refdata();
- } // XXX MT
-
- void
- _M_set_length(size_type __n)
- {
- _M_info._M_refcount = 0; // One reference.
- _M_info._M_length = __n;
- // grrr. (per 21.3.4)
- // You cannot leave those LWG people alone for a second.
- traits_type::assign(_M_refdata()[__n], _CharT());
- }
-
- // Create & Destroy
- static _Rep*
- _S_create(size_type, size_type, const _Alloc&);
-
- void
- _M_destroy(const _Alloc&) throw();
-
- _CharT*
- _M_clone(const _Alloc&, size_type __res = 0);
- };
-
- struct _Rep_empty
- : public _Rep
- {
- _CharT _M_terminal;
- };
-
- static _Rep_empty _S_empty_rep;
-
- // The maximum number of individual char_type elements of an
- // individual string is determined by _S_max_size. This is the
- // value that will be returned by max_size(). (Whereas npos
- // is the maximum number of bytes the allocator can allocate.)
- // If one was to divvy up the theoretical largest size string,
- // with a terminating character and m _CharT elements, it'd
- // look like this:
- // npos = sizeof(_Rep) + (m * sizeof(_CharT)) + sizeof(_CharT)
- // + sizeof(_Rep) - 1
- // (NB: last two terms for rounding reasons, see _M_create below)
- // Solving for m:
- // m = ((npos - 2 * sizeof(_Rep) + 1) / sizeof(_CharT)) - 1
- // In addition, this implementation halves this amount.
- enum { _S_max_size = (((static_cast<size_type>(-1) - 2 * sizeof(_Rep)
- + 1) / sizeof(_CharT)) - 1) / 2 };
-
- // Data Member (private):
- mutable typename _Util_Base::template _Alloc_hider<_Alloc> _M_dataplus;
-
- void
- _M_data(_CharT* __p)
- { _M_dataplus._M_p = __p; }
-
- _Rep*
- _M_rep() const
- { return &((reinterpret_cast<_Rep*>(_M_data()))[-1]); }
-
- _CharT*
- _M_grab(const _Alloc& __alloc) const
- {
- return (!_M_is_leaked() && _M_get_allocator() == __alloc)
- ? _M_rep()->_M_refcopy() : _M_rep()->_M_clone(__alloc);
- }
-
- void
- _M_dispose()
- {
- if (__exchange_and_add_dispatch(&_M_rep()->_M_info._M_refcount,
- -1) <= 0)
- _M_rep()->_M_destroy(_M_get_allocator());
- } // XXX MT
-
- bool
- _M_is_leaked() const
- { return _M_rep()->_M_info._M_refcount < 0; }
-
- void
- _M_set_sharable()
- { _M_rep()->_M_info._M_refcount = 0; }
-
- void
- _M_leak_hard();
-
- // _S_construct_aux is used to implement the 21.3.1 para 15 which
- // requires special behaviour if _InIterator is an integral type
- template<typename _InIterator>
- static _CharT*
- _S_construct_aux(_InIterator __beg, _InIterator __end,
- const _Alloc& __a, std::__false_type)
- {
- typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
- return _S_construct(__beg, __end, __a, _Tag());
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 438. Ambiguity in the "do the right thing" clause
- template<typename _Integer>
- static _CharT*
- _S_construct_aux(_Integer __beg, _Integer __end,
- const _Alloc& __a, std::__true_type)
- { return _S_construct(static_cast<size_type>(__beg), __end, __a); }
-
- template<typename _InIterator>
- static _CharT*
- _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a)
- {
- typedef typename std::__is_integer<_InIterator>::__type _Integral;
- return _S_construct_aux(__beg, __end, __a, _Integral());
- }
-
- // For Input Iterators, used in istreambuf_iterators, etc.
- template<typename _InIterator>
- static _CharT*
- _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
- std::input_iterator_tag);
-
- // For forward_iterators up to random_access_iterators, used for
- // string::iterator, _CharT*, etc.
- template<typename _FwdIterator>
- static _CharT*
- _S_construct(_FwdIterator __beg, _FwdIterator __end, const _Alloc& __a,
- std::forward_iterator_tag);
-
- static _CharT*
- _S_construct(size_type __req, _CharT __c, const _Alloc& __a);
-
- public:
- size_type
- _M_max_size() const
- { return size_type(_S_max_size); }
-
- _CharT*
- _M_data() const
- { return _M_dataplus._M_p; }
-
- size_type
- _M_length() const
- { return _M_rep()->_M_info._M_length; }
-
- size_type
- _M_capacity() const
- { return _M_rep()->_M_info._M_capacity; }
-
- bool
- _M_is_shared() const
- { return _M_rep()->_M_info._M_refcount > 0; }
-
- void
- _M_set_leaked()
- { _M_rep()->_M_info._M_refcount = -1; }
-
- void
- _M_leak() // for use in begin() & non-const op[]
- {
- if (!_M_is_leaked())
- _M_leak_hard();
- }
-
- void
- _M_set_length(size_type __n)
- { _M_rep()->_M_set_length(__n); }
-
- __rc_string_base()
- : _M_dataplus(_S_empty_rep._M_refcopy()) { }
-
- __rc_string_base(const _Alloc& __a);
-
- __rc_string_base(const __rc_string_base& __rcs);
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- __rc_string_base(__rc_string_base&& __rcs)
- : _M_dataplus(__rcs._M_get_allocator(), __rcs._M_data())
- { __rcs._M_data(_S_empty_rep._M_refcopy()); }
-#endif
-
- __rc_string_base(size_type __n, _CharT __c, const _Alloc& __a);
-
- template<typename _InputIterator>
- __rc_string_base(_InputIterator __beg, _InputIterator __end,
- const _Alloc& __a);
-
- ~__rc_string_base()
- { _M_dispose(); }
-
- allocator_type&
- _M_get_allocator()
- { return _M_dataplus; }
-
- const allocator_type&
- _M_get_allocator() const
- { return _M_dataplus; }
-
- void
- _M_swap(__rc_string_base& __rcs);
-
- void
- _M_assign(const __rc_string_base& __rcs);
-
- void
- _M_reserve(size_type __res);
-
- void
- _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
- size_type __len2);
-
- void
- _M_erase(size_type __pos, size_type __n);
-
- void
- _M_clear()
- { _M_erase(size_type(0), _M_length()); }
-
- bool
- _M_compare(const __rc_string_base&) const
- { return false; }
- };
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- typename __rc_string_base<_CharT, _Traits, _Alloc>::_Rep_empty
- __rc_string_base<_CharT, _Traits, _Alloc>::_S_empty_rep;
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- typename __rc_string_base<_CharT, _Traits, _Alloc>::_Rep*
- __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
- _S_create(size_type __capacity, size_type __old_capacity,
- const _Alloc& __alloc)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 83. String::npos vs. string::max_size()
- if (__capacity > size_type(_S_max_size))
- std::__throw_length_error(__N("__rc_string_base::_Rep::_S_create"));
-
- // The standard places no restriction on allocating more memory
- // than is strictly needed within this layer at the moment or as
- // requested by an explicit application call to reserve().
-
- // Many malloc implementations perform quite poorly when an
- // application attempts to allocate memory in a stepwise fashion
- // growing each allocation size by only 1 char. Additionally,
- // it makes little sense to allocate less linear memory than the
- // natural blocking size of the malloc implementation.
- // Unfortunately, we would need a somewhat low-level calculation
- // with tuned parameters to get this perfect for any particular
- // malloc implementation. Fortunately, generalizations about
- // common features seen among implementations seems to suffice.
-
- // __pagesize need not match the actual VM page size for good
- // results in practice, thus we pick a common value on the low
- // side. __malloc_header_size is an estimate of the amount of
- // overhead per memory allocation (in practice seen N * sizeof
- // (void*) where N is 0, 2 or 4). According to folklore,
- // picking this value on the high side is better than
- // low-balling it (especially when this algorithm is used with
- // malloc implementations that allocate memory blocks rounded up
- // to a size which is a power of 2).
- const size_type __pagesize = 4096;
- const size_type __malloc_header_size = 4 * sizeof(void*);
-
- // The below implements an exponential growth policy, necessary to
- // meet amortized linear time requirements of the library: see
- // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
- if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
- {
- __capacity = 2 * __old_capacity;
- // Never allocate a string bigger than _S_max_size.
- if (__capacity > size_type(_S_max_size))
- __capacity = size_type(_S_max_size);
- }
-
- // NB: Need an array of char_type[__capacity], plus a terminating
- // null char_type() element, plus enough for the _Rep data structure,
- // plus sizeof(_Rep) - 1 to upper round to a size multiple of
- // sizeof(_Rep).
- // Whew. Seemingly so needy, yet so elemental.
- size_type __size = ((__capacity + 1) * sizeof(_CharT)
- + 2 * sizeof(_Rep) - 1);
-
- const size_type __adj_size = __size + __malloc_header_size;
- if (__adj_size > __pagesize && __capacity > __old_capacity)
- {
- const size_type __extra = __pagesize - __adj_size % __pagesize;
- __capacity += __extra / sizeof(_CharT);
- if (__capacity > size_type(_S_max_size))
- __capacity = size_type(_S_max_size);
- __size = (__capacity + 1) * sizeof(_CharT) + 2 * sizeof(_Rep) - 1;
- }
-
- // NB: Might throw, but no worries about a leak, mate: _Rep()
- // does not throw.
- _Rep* __place = _Rep_alloc_type(__alloc).allocate(__size / sizeof(_Rep));
- _Rep* __p = new (__place) _Rep;
- __p->_M_info._M_capacity = __capacity;
- return __p;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
- _M_destroy(const _Alloc& __a) throw ()
- {
- const size_type __size = ((_M_info._M_capacity + 1) * sizeof(_CharT)
- + 2 * sizeof(_Rep) - 1);
- _Rep_alloc_type(__a).deallocate(this, __size / sizeof(_Rep));
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- _CharT*
- __rc_string_base<_CharT, _Traits, _Alloc>::_Rep::
- _M_clone(const _Alloc& __alloc, size_type __res)
- {
- // Requested capacity of the clone.
- const size_type __requested_cap = _M_info._M_length + __res;
- _Rep* __r = _Rep::_S_create(__requested_cap, _M_info._M_capacity,
- __alloc);
-
- if (_M_info._M_length)
- _S_copy(__r->_M_refdata(), _M_refdata(), _M_info._M_length);
-
- __r->_M_set_length(_M_info._M_length);
- return __r->_M_refdata();
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __rc_string_base<_CharT, _Traits, _Alloc>::
- __rc_string_base(const _Alloc& __a)
- : _M_dataplus(__a, _S_construct(size_type(), _CharT(), __a)) { }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __rc_string_base<_CharT, _Traits, _Alloc>::
- __rc_string_base(const __rc_string_base& __rcs)
- : _M_dataplus(__rcs._M_get_allocator(),
- __rcs._M_grab(__rcs._M_get_allocator())) { }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __rc_string_base<_CharT, _Traits, _Alloc>::
- __rc_string_base(size_type __n, _CharT __c, const _Alloc& __a)
- : _M_dataplus(__a, _S_construct(__n, __c, __a)) { }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InputIterator>
- __rc_string_base<_CharT, _Traits, _Alloc>::
- __rc_string_base(_InputIterator __beg, _InputIterator __end,
- const _Alloc& __a)
- : _M_dataplus(__a, _S_construct(__beg, __end, __a)) { }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_leak_hard()
- {
- if (_M_is_shared())
- _M_erase(0, 0);
- _M_set_leaked();
- }
-
- // NB: This is the special case for Input Iterators, used in
- // istreambuf_iterators, etc.
- // Input Iterators have a cost structure very different from
- // pointers, calling for a different coding style.
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InIterator>
- _CharT*
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
- std::input_iterator_tag)
- {
- if (__beg == __end && __a == _Alloc())
- return _S_empty_rep._M_refcopy();
-
- // Avoid reallocation for common case.
- _CharT __buf[128];
- size_type __len = 0;
- while (__beg != __end && __len < sizeof(__buf) / sizeof(_CharT))
- {
- __buf[__len++] = *__beg;
- ++__beg;
- }
- _Rep* __r = _Rep::_S_create(__len, size_type(0), __a);
- _S_copy(__r->_M_refdata(), __buf, __len);
- __try
- {
- while (__beg != __end)
- {
- if (__len == __r->_M_info._M_capacity)
- {
- // Allocate more space.
- _Rep* __another = _Rep::_S_create(__len + 1, __len, __a);
- _S_copy(__another->_M_refdata(), __r->_M_refdata(), __len);
- __r->_M_destroy(__a);
- __r = __another;
- }
- __r->_M_refdata()[__len++] = *__beg;
- ++__beg;
- }
- }
- __catch(...)
- {
- __r->_M_destroy(__a);
- __throw_exception_again;
- }
- __r->_M_set_length(__len);
- return __r->_M_refdata();
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InIterator>
- _CharT*
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _S_construct(_InIterator __beg, _InIterator __end, const _Alloc& __a,
- std::forward_iterator_tag)
- {
- if (__beg == __end && __a == _Alloc())
- return _S_empty_rep._M_refcopy();
-
- // NB: Not required, but considered best practice.
- if (__builtin_expect(__is_null_pointer(__beg) && __beg != __end, 0))
- std::__throw_logic_error(__N("__rc_string_base::"
- "_S_construct NULL not valid"));
-
- const size_type __dnew = static_cast<size_type>(std::distance(__beg,
- __end));
- // Check for out_of_range and length_error exceptions.
- _Rep* __r = _Rep::_S_create(__dnew, size_type(0), __a);
- __try
- { _S_copy_chars(__r->_M_refdata(), __beg, __end); }
- __catch(...)
- {
- __r->_M_destroy(__a);
- __throw_exception_again;
- }
- __r->_M_set_length(__dnew);
- return __r->_M_refdata();
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- _CharT*
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _S_construct(size_type __n, _CharT __c, const _Alloc& __a)
- {
- if (__n == 0 && __a == _Alloc())
- return _S_empty_rep._M_refcopy();
-
- // Check for out_of_range and length_error exceptions.
- _Rep* __r = _Rep::_S_create(__n, size_type(0), __a);
- if (__n)
- _S_assign(__r->_M_refdata(), __n, __c);
-
- __r->_M_set_length(__n);
- return __r->_M_refdata();
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_swap(__rc_string_base& __rcs)
- {
- if (_M_is_leaked())
- _M_set_sharable();
- if (__rcs._M_is_leaked())
- __rcs._M_set_sharable();
-
- _CharT* __tmp = _M_data();
- _M_data(__rcs._M_data());
- __rcs._M_data(__tmp);
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 431. Swapping containers with unequal allocators.
- std::__alloc_swap<allocator_type>::_S_do_it(_M_get_allocator(),
- __rcs._M_get_allocator());
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_assign(const __rc_string_base& __rcs)
- {
- if (_M_rep() != __rcs._M_rep())
- {
- _CharT* __tmp = __rcs._M_grab(_M_get_allocator());
- _M_dispose();
- _M_data(__tmp);
- }
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_reserve(size_type __res)
- {
- // Make sure we don't shrink below the current size.
- if (__res < _M_length())
- __res = _M_length();
-
- if (__res != _M_capacity() || _M_is_shared())
- {
- _CharT* __tmp = _M_rep()->_M_clone(_M_get_allocator(),
- __res - _M_length());
- _M_dispose();
- _M_data(__tmp);
- }
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
- size_type __len2)
- {
- const size_type __how_much = _M_length() - __pos - __len1;
-
- _Rep* __r = _Rep::_S_create(_M_length() + __len2 - __len1,
- _M_capacity(), _M_get_allocator());
-
- if (__pos)
- _S_copy(__r->_M_refdata(), _M_data(), __pos);
- if (__s && __len2)
- _S_copy(__r->_M_refdata() + __pos, __s, __len2);
- if (__how_much)
- _S_copy(__r->_M_refdata() + __pos + __len2,
- _M_data() + __pos + __len1, __how_much);
-
- _M_dispose();
- _M_data(__r->_M_refdata());
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __rc_string_base<_CharT, _Traits, _Alloc>::
- _M_erase(size_type __pos, size_type __n)
- {
- const size_type __new_size = _M_length() - __n;
- const size_type __how_much = _M_length() - __pos - __n;
-
- if (_M_is_shared())
- {
- // Must reallocate.
- _Rep* __r = _Rep::_S_create(__new_size, _M_capacity(),
- _M_get_allocator());
-
- if (__pos)
- _S_copy(__r->_M_refdata(), _M_data(), __pos);
- if (__how_much)
- _S_copy(__r->_M_refdata() + __pos,
- _M_data() + __pos + __n, __how_much);
-
- _M_dispose();
- _M_data(__r->_M_refdata());
- }
- else if (__how_much && __n)
- {
- // Work in-place.
- _S_move(_M_data() + __pos,
- _M_data() + __pos + __n, __how_much);
- }
-
- _M_rep()->_M_set_length(__new_size);
- }
-
- template<>
- inline bool
- __rc_string_base<char, std::char_traits<char>,
- std::allocator<char> >::
- _M_compare(const __rc_string_base& __rcs) const
- {
- if (_M_rep() == __rcs._M_rep())
- return true;
- return false;
- }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- template<>
- inline bool
- __rc_string_base<wchar_t, std::char_traits<wchar_t>,
- std::allocator<wchar_t> >::
- _M_compare(const __rc_string_base& __rcs) const
- {
- if (_M_rep() == __rcs._M_rep())
- return true;
- return false;
- }
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _RC_STRING_BASE_H */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/rope b/gcc-4.4.3/libstdc++-v3/include/ext/rope
deleted file mode 100644
index 462c8f5db..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/rope
+++ /dev/null
@@ -1,2958 +0,0 @@
-// SGI's rope class -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ext/rope
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _ROPE
-#define _ROPE 1
-
-#include <algorithm>
-#include <iosfwd>
-#include <bits/stl_construct.h>
-#include <bits/stl_uninitialized.h>
-#include <bits/stl_function.h>
-#include <bits/stl_numeric.h>
-#include <bits/allocator.h>
-#include <bits/gthr.h>
-#include <tr1/functional>
-
-# ifdef __GC
-# define __GC_CONST const
-# else
-# define __GC_CONST // constant except for deallocation
-# endif
-
-#include <ext/memory> // For uninitialized_copy_n
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- namespace __detail
- {
- enum { _S_max_rope_depth = 45 };
- enum _Tag {_S_leaf, _S_concat, _S_substringfn, _S_function};
- } // namespace __detail
-
- using std::size_t;
- using std::ptrdiff_t;
- using std::allocator;
- using std::_Destroy;
-
- // See libstdc++/36832.
- template<typename _ForwardIterator, typename _Allocator>
- void
- _Destroy_const(_ForwardIterator __first,
- _ForwardIterator __last, _Allocator __alloc)
- {
- for (; __first != __last; ++__first)
- __alloc.destroy(&*__first);
- }
-
- template<typename _ForwardIterator, typename _Tp>
- inline void
- _Destroy_const(_ForwardIterator __first,
- _ForwardIterator __last, allocator<_Tp>)
- { _Destroy(__first, __last); }
-
- // The _S_eos function is used for those functions that
- // convert to/from C-like strings to detect the end of the string.
-
- // The end-of-C-string character.
- // This is what the draft standard says it should be.
- template <class _CharT>
- inline _CharT
- _S_eos(_CharT*)
- { return _CharT(); }
-
- // Test for basic character types.
- // For basic character types leaves having a trailing eos.
- template <class _CharT>
- inline bool
- _S_is_basic_char_type(_CharT*)
- { return false; }
-
- template <class _CharT>
- inline bool
- _S_is_one_byte_char_type(_CharT*)
- { return false; }
-
- inline bool
- _S_is_basic_char_type(char*)
- { return true; }
-
- inline bool
- _S_is_one_byte_char_type(char*)
- { return true; }
-
- inline bool
- _S_is_basic_char_type(wchar_t*)
- { return true; }
-
- // Store an eos iff _CharT is a basic character type.
- // Do not reference _S_eos if it isn't.
- template <class _CharT>
- inline void
- _S_cond_store_eos(_CharT&) { }
-
- inline void
- _S_cond_store_eos(char& __c)
- { __c = 0; }
-
- inline void
- _S_cond_store_eos(wchar_t& __c)
- { __c = 0; }
-
- // char_producers are logically functions that generate a section of
- // a string. These can be converted to ropes. The resulting rope
- // invokes the char_producer on demand. This allows, for example,
- // files to be viewed as ropes without reading the entire file.
- template <class _CharT>
- class char_producer
- {
- public:
- virtual ~char_producer() { };
-
- virtual void
- operator()(size_t __start_pos, size_t __len,
- _CharT* __buffer) = 0;
- // Buffer should really be an arbitrary output iterator.
- // That way we could flatten directly into an ostream, etc.
- // This is thoroughly impossible, since iterator types don't
- // have runtime descriptions.
- };
-
- // Sequence buffers:
- //
- // Sequence must provide an append operation that appends an
- // array to the sequence. Sequence buffers are useful only if
- // appending an entire array is cheaper than appending element by element.
- // This is true for many string representations.
- // This should perhaps inherit from ostream<sequence::value_type>
- // and be implemented correspondingly, so that they can be used
- // for formatted. For the sake of portability, we don't do this yet.
- //
- // For now, sequence buffers behave as output iterators. But they also
- // behave a little like basic_ostringstream<sequence::value_type> and a
- // little like containers.
-
- template<class _Sequence, size_t _Buf_sz = 100>
- class sequence_buffer
- : public std::iterator<std::output_iterator_tag, void, void, void, void>
- {
- public:
- typedef typename _Sequence::value_type value_type;
- protected:
- _Sequence* _M_prefix;
- value_type _M_buffer[_Buf_sz];
- size_t _M_buf_count;
- public:
-
- void
- flush()
- {
- _M_prefix->append(_M_buffer, _M_buffer + _M_buf_count);
- _M_buf_count = 0;
- }
-
- ~sequence_buffer()
- { flush(); }
-
- sequence_buffer()
- : _M_prefix(0), _M_buf_count(0) { }
-
- sequence_buffer(const sequence_buffer& __x)
- {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- std::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- }
-
- sequence_buffer(sequence_buffer& __x)
- {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- }
-
- sequence_buffer(_Sequence& __s)
- : _M_prefix(&__s), _M_buf_count(0) { }
-
- sequence_buffer&
- operator=(sequence_buffer& __x)
- {
- __x.flush();
- _M_prefix = __x._M_prefix;
- _M_buf_count = 0;
- return *this;
- }
-
- sequence_buffer&
- operator=(const sequence_buffer& __x)
- {
- _M_prefix = __x._M_prefix;
- _M_buf_count = __x._M_buf_count;
- std::copy(__x._M_buffer, __x._M_buffer + __x._M_buf_count, _M_buffer);
- return *this;
- }
-
- void
- push_back(value_type __x)
- {
- if (_M_buf_count < _Buf_sz)
- {
- _M_buffer[_M_buf_count] = __x;
- ++_M_buf_count;
- }
- else
- {
- flush();
- _M_buffer[0] = __x;
- _M_buf_count = 1;
- }
- }
-
- void
- append(value_type* __s, size_t __len)
- {
- if (__len + _M_buf_count <= _Buf_sz)
- {
- size_t __i = _M_buf_count;
- for (size_t __j = 0; __j < __len; __i++, __j++)
- _M_buffer[__i] = __s[__j];
- _M_buf_count += __len;
- }
- else if (0 == _M_buf_count)
- _M_prefix->append(__s, __s + __len);
- else
- {
- flush();
- append(__s, __len);
- }
- }
-
- sequence_buffer&
- write(value_type* __s, size_t __len)
- {
- append(__s, __len);
- return *this;
- }
-
- sequence_buffer&
- put(value_type __x)
- {
- push_back(__x);
- return *this;
- }
-
- sequence_buffer&
- operator=(const value_type& __rhs)
- {
- push_back(__rhs);
- return *this;
- }
-
- sequence_buffer&
- operator*()
- { return *this; }
-
- sequence_buffer&
- operator++()
- { return *this; }
-
- sequence_buffer
- operator++(int)
- { return *this; }
- };
-
- // The following should be treated as private, at least for now.
- template<class _CharT>
- class _Rope_char_consumer
- {
- public:
- // If we had member templates, these should not be virtual.
- // For now we need to use run-time parametrization where
- // compile-time would do. Hence this should all be private
- // for now.
- // The symmetry with char_producer is accidental and temporary.
- virtual ~_Rope_char_consumer() { };
-
- virtual bool
- operator()(const _CharT* __buffer, size_t __len) = 0;
- };
-
- // First a lot of forward declarations. The standard seems to require
- // much stricter "declaration before use" than many of the implementations
- // that preceded it.
- template<class _CharT, class _Alloc = allocator<_CharT> >
- class rope;
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeConcatenation;
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeLeaf;
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeFunction;
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeSubstring;
-
- template<class _CharT, class _Alloc>
- class _Rope_iterator;
-
- template<class _CharT, class _Alloc>
- class _Rope_const_iterator;
-
- template<class _CharT, class _Alloc>
- class _Rope_char_ref_proxy;
-
- template<class _CharT, class _Alloc>
- class _Rope_char_ptr_proxy;
-
- template<class _CharT, class _Alloc>
- bool
- operator==(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- _Rope_const_iterator<_CharT, _Alloc>
- operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- ptrdiff_t __n);
-
- template<class _CharT, class _Alloc>
- _Rope_const_iterator<_CharT, _Alloc>
- operator+(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- ptrdiff_t __n);
-
- template<class _CharT, class _Alloc>
- _Rope_const_iterator<_CharT, _Alloc>
- operator+(ptrdiff_t __n,
- const _Rope_const_iterator<_CharT, _Alloc>& __x);
-
- template<class _CharT, class _Alloc>
- bool
- operator==(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- bool
- operator<(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- ptrdiff_t
- operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- _Rope_iterator<_CharT, _Alloc>
- operator-(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n);
-
- template<class _CharT, class _Alloc>
- _Rope_iterator<_CharT, _Alloc>
- operator+(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n);
-
- template<class _CharT, class _Alloc>
- _Rope_iterator<_CharT, _Alloc>
- operator+(ptrdiff_t __n, const _Rope_iterator<_CharT, _Alloc>& __x);
-
- template<class _CharT, class _Alloc>
- bool
- operator==(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- bool
- operator<(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- ptrdiff_t
- operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y);
-
- template<class _CharT, class _Alloc>
- rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left,
- const rope<_CharT, _Alloc>& __right);
-
- template<class _CharT, class _Alloc>
- rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left, const _CharT* __right);
-
- template<class _CharT, class _Alloc>
- rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left, _CharT __right);
-
- // Some helpers, so we can use power on ropes.
- // See below for why this isn't local to the implementation.
-
- // This uses a nonstandard refcount convention.
- // The result has refcount 0.
- template<class _CharT, class _Alloc>
- struct _Rope_Concat_fn
- : public std::binary_function<rope<_CharT, _Alloc>, rope<_CharT, _Alloc>,
- rope<_CharT, _Alloc> >
- {
- rope<_CharT, _Alloc>
- operator()(const rope<_CharT, _Alloc>& __x,
- const rope<_CharT, _Alloc>& __y)
- { return __x + __y; }
- };
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>
- identity_element(_Rope_Concat_fn<_CharT, _Alloc>)
- { return rope<_CharT, _Alloc>(); }
-
- // Class _Refcount_Base provides a type, _RC_t, a data member,
- // _M_ref_count, and member functions _M_incr and _M_decr, which perform
- // atomic preincrement/predecrement. The constructor initializes
- // _M_ref_count.
- struct _Refcount_Base
- {
- // The type _RC_t
- typedef size_t _RC_t;
-
- // The data member _M_ref_count
- volatile _RC_t _M_ref_count;
-
- // Constructor
- __gthread_mutex_t _M_ref_count_lock;
-
- _Refcount_Base(_RC_t __n) : _M_ref_count(__n), _M_ref_count_lock()
- {
-#ifdef __GTHREAD_MUTEX_INIT
- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
- _M_ref_count_lock = __tmp;
-#elif defined(__GTHREAD_MUTEX_INIT_FUNCTION)
- __GTHREAD_MUTEX_INIT_FUNCTION (&_M_ref_count_lock);
-#else
-#error __GTHREAD_MUTEX_INIT or __GTHREAD_MUTEX_INIT_FUNCTION should be defined by gthr.h abstraction layer, report problem to libstdc++@gcc.gnu.org.
-#endif
- }
-
- void
- _M_incr()
- {
- __gthread_mutex_lock(&_M_ref_count_lock);
- ++_M_ref_count;
- __gthread_mutex_unlock(&_M_ref_count_lock);
- }
-
- _RC_t
- _M_decr()
- {
- __gthread_mutex_lock(&_M_ref_count_lock);
- volatile _RC_t __tmp = --_M_ref_count;
- __gthread_mutex_unlock(&_M_ref_count_lock);
- return __tmp;
- }
- };
-
- //
- // What follows should really be local to rope. Unfortunately,
- // that doesn't work, since it makes it impossible to define generic
- // equality on rope iterators. According to the draft standard, the
- // template parameters for such an equality operator cannot be inferred
- // from the occurrence of a member class as a parameter.
- // (SGI compilers in fact allow this, but the __result wouldn't be
- // portable.)
- // Similarly, some of the static member functions are member functions
- // only to avoid polluting the global namespace, and to circumvent
- // restrictions on type inference for template functions.
- //
-
- //
- // The internal data structure for representing a rope. This is
- // private to the implementation. A rope is really just a pointer
- // to one of these.
- //
- // A few basic functions for manipulating this data structure
- // are members of _RopeRep. Most of the more complex algorithms
- // are implemented as rope members.
- //
- // Some of the static member functions of _RopeRep have identically
- // named functions in rope that simply invoke the _RopeRep versions.
-
-#define __ROPE_DEFINE_ALLOCS(__a) \
- __ROPE_DEFINE_ALLOC(_CharT,_Data) /* character data */ \
- typedef _Rope_RopeConcatenation<_CharT,__a> __C; \
- __ROPE_DEFINE_ALLOC(__C,_C) \
- typedef _Rope_RopeLeaf<_CharT,__a> __L; \
- __ROPE_DEFINE_ALLOC(__L,_L) \
- typedef _Rope_RopeFunction<_CharT,__a> __F; \
- __ROPE_DEFINE_ALLOC(__F,_F) \
- typedef _Rope_RopeSubstring<_CharT,__a> __S; \
- __ROPE_DEFINE_ALLOC(__S,_S)
-
- // Internal rope nodes potentially store a copy of the allocator
- // instance used to allocate them. This is mostly redundant.
- // But the alternative would be to pass allocator instances around
- // in some form to nearly all internal functions, since any pointer
- // assignment may result in a zero reference count and thus require
- // deallocation.
-
-#define __STATIC_IF_SGI_ALLOC /* not static */
-
- template <class _CharT, class _Alloc>
- struct _Rope_rep_base
- : public _Alloc
- {
- typedef _Alloc allocator_type;
-
- allocator_type
- get_allocator() const
- { return *static_cast<const _Alloc*>(this); }
-
- allocator_type&
- _M_get_allocator()
- { return *static_cast<_Alloc*>(this); }
-
- const allocator_type&
- _M_get_allocator() const
- { return *static_cast<const _Alloc*>(this); }
-
- _Rope_rep_base(size_t __size, const allocator_type&)
- : _M_size(__size) { }
-
- size_t _M_size;
-
-# define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc::template rebind<_Tp>::other __name##Alloc; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc().allocate(__n); } \
- static void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc().deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Alloc)
-# undef __ROPE_DEFINE_ALLOC
- };
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeRep
- : public _Rope_rep_base<_CharT, _Alloc>
-# ifndef __GC
- , _Refcount_Base
-# endif
- {
- public:
- __detail::_Tag _M_tag:8;
- bool _M_is_balanced:8;
- unsigned char _M_depth;
- __GC_CONST _CharT* _M_c_string;
- __gthread_mutex_t _M_c_string_lock;
- /* Flattened version of string, if needed. */
- /* typically 0. */
- /* If it's not 0, then the memory is owned */
- /* by this node. */
- /* In the case of a leaf, this may point to */
- /* the same memory as the data field. */
- typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
- allocator_type;
-
- using _Rope_rep_base<_CharT, _Alloc>::get_allocator;
- using _Rope_rep_base<_CharT, _Alloc>::_M_get_allocator;
-
- _Rope_RopeRep(__detail::_Tag __t, int __d, bool __b, size_t __size,
- const allocator_type& __a)
- : _Rope_rep_base<_CharT, _Alloc>(__size, __a),
-#ifndef __GC
- _Refcount_Base(1),
-#endif
- _M_tag(__t), _M_is_balanced(__b), _M_depth(__d), _M_c_string(0)
-#ifdef __GTHREAD_MUTEX_INIT
- {
- // Do not copy a POSIX/gthr mutex once in use. However, bits are bits.
- __gthread_mutex_t __tmp = __GTHREAD_MUTEX_INIT;
- _M_c_string_lock = __tmp;
- }
-#else
- { __GTHREAD_MUTEX_INIT_FUNCTION (&_M_c_string_lock); }
-#endif
-#ifdef __GC
- void
- _M_incr () { }
-#endif
- static void
- _S_free_string(__GC_CONST _CharT*, size_t __len,
- allocator_type& __a);
-#define __STL_FREE_STRING(__s, __l, __a) _S_free_string(__s, __l, __a);
- // Deallocate data section of a leaf.
- // This shouldn't be a member function.
- // But its hard to do anything else at the
- // moment, because it's templatized w.r.t.
- // an allocator.
- // Does nothing if __GC is defined.
-#ifndef __GC
- void _M_free_c_string();
- void _M_free_tree();
- // Deallocate t. Assumes t is not 0.
- void
- _M_unref_nonnil()
- {
- if (0 == _M_decr())
- _M_free_tree();
- }
-
- void
- _M_ref_nonnil()
- { _M_incr(); }
-
- static void
- _S_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t)
- __t->_M_unref_nonnil();
- }
-
- static void
- _S_ref(_Rope_RopeRep* __t)
- {
- if (0 != __t)
- __t->_M_incr();
- }
-
- static void
- _S_free_if_unref(_Rope_RopeRep* __t)
- {
- if (0 != __t && 0 == __t->_M_ref_count)
- __t->_M_free_tree();
- }
-# else /* __GC */
- void _M_unref_nonnil() { }
- void _M_ref_nonnil() { }
- static void _S_unref(_Rope_RopeRep*) { }
- static void _S_ref(_Rope_RopeRep*) { }
- static void _S_free_if_unref(_Rope_RopeRep*) { }
-# endif
-protected:
- _Rope_RopeRep&
- operator=(const _Rope_RopeRep&);
-
- _Rope_RopeRep(const _Rope_RopeRep&);
- };
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeLeaf
- : public _Rope_RopeRep<_CharT, _Alloc>
- {
- public:
- // Apparently needed by VC++
- // The data fields of leaves are allocated with some
- // extra space, to accommodate future growth and for basic
- // character types, to hold a trailing eos character.
- enum { _S_alloc_granularity = 8 };
-
- static size_t
- _S_rounded_up_size(size_t __n)
- {
- size_t __size_with_eos;
-
- if (_S_is_basic_char_type((_CharT*)0))
- __size_with_eos = __n + 1;
- else
- __size_with_eos = __n;
-#ifdef __GC
- return __size_with_eos;
-#else
- // Allow slop for in-place expansion.
- return ((__size_with_eos + size_t(_S_alloc_granularity) - 1)
- &~ (size_t(_S_alloc_granularity) - 1));
-#endif
- }
- __GC_CONST _CharT* _M_data; /* Not necessarily 0 terminated. */
- /* The allocated size is */
- /* _S_rounded_up_size(size), except */
- /* in the GC case, in which it */
- /* doesn't matter. */
- typedef typename _Rope_rep_base<_CharT,_Alloc>::allocator_type
- allocator_type;
-
- _Rope_RopeLeaf(__GC_CONST _CharT* __d, size_t __size,
- const allocator_type& __a)
- : _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_leaf, 0, true,
- __size, __a), _M_data(__d)
- {
- if (_S_is_basic_char_type((_CharT *)0))
- {
- // already eos terminated.
- this->_M_c_string = __d;
- }
- }
- // The constructor assumes that d has been allocated with
- // the proper allocator and the properly padded size.
- // In contrast, the destructor deallocates the data:
-#ifndef __GC
- ~_Rope_RopeLeaf() throw()
- {
- if (_M_data != this->_M_c_string)
- this->_M_free_c_string();
-
- __STL_FREE_STRING(_M_data, this->_M_size, this->_M_get_allocator());
- }
-#endif
-protected:
- _Rope_RopeLeaf&
- operator=(const _Rope_RopeLeaf&);
-
- _Rope_RopeLeaf(const _Rope_RopeLeaf&);
- };
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeConcatenation
- : public _Rope_RopeRep<_CharT, _Alloc>
- {
- public:
- _Rope_RopeRep<_CharT, _Alloc>* _M_left;
- _Rope_RopeRep<_CharT, _Alloc>* _M_right;
-
- typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
- allocator_type;
-
- _Rope_RopeConcatenation(_Rope_RopeRep<_CharT, _Alloc>* __l,
- _Rope_RopeRep<_CharT, _Alloc>* __r,
- const allocator_type& __a)
- : _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_concat,
- std::max(__l->_M_depth,
- __r->_M_depth) + 1,
- false,
- __l->_M_size + __r->_M_size, __a),
- _M_left(__l), _M_right(__r)
- { }
-#ifndef __GC
- ~_Rope_RopeConcatenation() throw()
- {
- this->_M_free_c_string();
- _M_left->_M_unref_nonnil();
- _M_right->_M_unref_nonnil();
- }
-#endif
-protected:
- _Rope_RopeConcatenation&
- operator=(const _Rope_RopeConcatenation&);
-
- _Rope_RopeConcatenation(const _Rope_RopeConcatenation&);
- };
-
- template<class _CharT, class _Alloc>
- struct _Rope_RopeFunction
- : public _Rope_RopeRep<_CharT, _Alloc>
- {
- public:
- char_producer<_CharT>* _M_fn;
-#ifndef __GC
- bool _M_delete_when_done; // Char_producer is owned by the
- // rope and should be explicitly
- // deleted when the rope becomes
- // inaccessible.
-#else
- // In the GC case, we either register the rope for
- // finalization, or not. Thus the field is unnecessary;
- // the information is stored in the collector data structures.
- // We do need a finalization procedure to be invoked by the
- // collector.
- static void
- _S_fn_finalization_proc(void * __tree, void *)
- { delete ((_Rope_RopeFunction *)__tree) -> _M_fn; }
-#endif
- typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
- allocator_type;
-
- _Rope_RopeFunction(char_producer<_CharT>* __f, size_t __size,
- bool __d, const allocator_type& __a)
- : _Rope_RopeRep<_CharT, _Alloc>(__detail::_S_function, 0, true, __size, __a)
- , _M_fn(__f)
-#ifndef __GC
- , _M_delete_when_done(__d)
-#endif
- {
-#ifdef __GC
- if (__d)
- {
- GC_REGISTER_FINALIZER(this, _Rope_RopeFunction::
- _S_fn_finalization_proc, 0, 0, 0);
- }
-#endif
- }
-#ifndef __GC
- ~_Rope_RopeFunction() throw()
- {
- this->_M_free_c_string();
- if (_M_delete_when_done)
- delete _M_fn;
- }
-# endif
- protected:
- _Rope_RopeFunction&
- operator=(const _Rope_RopeFunction&);
-
- _Rope_RopeFunction(const _Rope_RopeFunction&);
- };
- // Substring results are usually represented using just
- // concatenation nodes. But in the case of very long flat ropes
- // or ropes with a functional representation that isn't practical.
- // In that case, we represent the __result as a special case of
- // RopeFunction, whose char_producer points back to the rope itself.
- // In all cases except repeated substring operations and
- // deallocation, we treat the __result as a RopeFunction.
- template<class _CharT, class _Alloc>
- struct _Rope_RopeSubstring
- : public _Rope_RopeFunction<_CharT, _Alloc>,
- public char_producer<_CharT>
- {
- public:
- // XXX this whole class should be rewritten.
- _Rope_RopeRep<_CharT,_Alloc>* _M_base; // not 0
- size_t _M_start;
-
- virtual void
- operator()(size_t __start_pos, size_t __req_len,
- _CharT* __buffer)
- {
- switch(_M_base->_M_tag)
- {
- case __detail::_S_function:
- case __detail::_S_substringfn:
- {
- char_producer<_CharT>* __fn =
- ((_Rope_RopeFunction<_CharT,_Alloc>*)_M_base)->_M_fn;
- (*__fn)(__start_pos + _M_start, __req_len, __buffer);
- }
- break;
- case __detail::_S_leaf:
- {
- __GC_CONST _CharT* __s =
- ((_Rope_RopeLeaf<_CharT,_Alloc>*)_M_base)->_M_data;
- uninitialized_copy_n(__s + __start_pos + _M_start, __req_len,
- __buffer);
- }
- break;
- default:
- break;
- }
- }
-
- typedef typename _Rope_rep_base<_CharT, _Alloc>::allocator_type
- allocator_type;
-
- _Rope_RopeSubstring(_Rope_RopeRep<_CharT, _Alloc>* __b, size_t __s,
- size_t __l, const allocator_type& __a)
- : _Rope_RopeFunction<_CharT, _Alloc>(this, __l, false, __a),
- char_producer<_CharT>(), _M_base(__b), _M_start(__s)
- {
-#ifndef __GC
- _M_base->_M_ref_nonnil();
-#endif
- this->_M_tag = __detail::_S_substringfn;
- }
- virtual ~_Rope_RopeSubstring() throw()
- {
-#ifndef __GC
- _M_base->_M_unref_nonnil();
- // _M_free_c_string(); -- done by parent class
-#endif
- }
- };
-
- // Self-destructing pointers to Rope_rep.
- // These are not conventional smart pointers. Their
- // only purpose in life is to ensure that unref is called
- // on the pointer either at normal exit or if an exception
- // is raised. It is the caller's responsibility to
- // adjust reference counts when these pointers are initialized
- // or assigned to. (This convention significantly reduces
- // the number of potentially expensive reference count
- // updates.)
-#ifndef __GC
- template<class _CharT, class _Alloc>
- struct _Rope_self_destruct_ptr
- {
- _Rope_RopeRep<_CharT, _Alloc>* _M_ptr;
-
- ~_Rope_self_destruct_ptr()
- { _Rope_RopeRep<_CharT, _Alloc>::_S_unref(_M_ptr); }
-#ifdef __EXCEPTIONS
- _Rope_self_destruct_ptr() : _M_ptr(0) { };
-#else
- _Rope_self_destruct_ptr() { };
-#endif
- _Rope_self_destruct_ptr(_Rope_RopeRep<_CharT, _Alloc>* __p)
- : _M_ptr(__p) { }
-
- _Rope_RopeRep<_CharT, _Alloc>&
- operator*()
- { return *_M_ptr; }
-
- _Rope_RopeRep<_CharT, _Alloc>*
- operator->()
- { return _M_ptr; }
-
- operator _Rope_RopeRep<_CharT, _Alloc>*()
- { return _M_ptr; }
-
- _Rope_self_destruct_ptr&
- operator=(_Rope_RopeRep<_CharT, _Alloc>* __x)
- { _M_ptr = __x; return *this; }
- };
-#endif
-
- // Dereferencing a nonconst iterator has to return something
- // that behaves almost like a reference. It's not possible to
- // return an actual reference since assignment requires extra
- // work. And we would get into the same problems as with the
- // CD2 version of basic_string.
- template<class _CharT, class _Alloc>
- class _Rope_char_ref_proxy
- {
- friend class rope<_CharT, _Alloc>;
- friend class _Rope_iterator<_CharT, _Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT, _Alloc>;
-#ifdef __GC
- typedef _Rope_RopeRep<_CharT, _Alloc>* _Self_destruct_ptr;
-#else
- typedef _Rope_self_destruct_ptr<_CharT, _Alloc> _Self_destruct_ptr;
-#endif
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- typedef rope<_CharT, _Alloc> _My_rope;
- size_t _M_pos;
- _CharT _M_current;
- bool _M_current_valid;
- _My_rope* _M_root; // The whole rope.
- public:
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p)
- : _M_pos(__p), _M_current(), _M_current_valid(false), _M_root(__r) { }
-
- _Rope_char_ref_proxy(const _Rope_char_ref_proxy& __x)
- : _M_pos(__x._M_pos), _M_current(__x._M_current),
- _M_current_valid(false), _M_root(__x._M_root) { }
-
- // Don't preserve cache if the reference can outlive the
- // expression. We claim that's not possible without calling
- // a copy constructor or generating reference to a proxy
- // reference. We declare the latter to have undefined semantics.
- _Rope_char_ref_proxy(_My_rope* __r, size_t __p, _CharT __c)
- : _M_pos(__p), _M_current(__c), _M_current_valid(true), _M_root(__r) { }
-
- inline operator _CharT () const;
-
- _Rope_char_ref_proxy&
- operator=(_CharT __c);
-
- _Rope_char_ptr_proxy<_CharT, _Alloc> operator&() const;
-
- _Rope_char_ref_proxy&
- operator=(const _Rope_char_ref_proxy& __c)
- { return operator=((_CharT)__c); }
- };
-
- template<class _CharT, class __Alloc>
- inline void
- swap(_Rope_char_ref_proxy <_CharT, __Alloc > __a,
- _Rope_char_ref_proxy <_CharT, __Alloc > __b)
- {
- _CharT __tmp = __a;
- __a = __b;
- __b = __tmp;
- }
-
- template<class _CharT, class _Alloc>
- class _Rope_char_ptr_proxy
- {
- // XXX this class should be rewritten.
- friend class _Rope_char_ref_proxy<_CharT, _Alloc>;
- size_t _M_pos;
- rope<_CharT,_Alloc>* _M_root; // The whole rope.
- public:
- _Rope_char_ptr_proxy(const _Rope_char_ref_proxy<_CharT,_Alloc>& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) { }
-
- _Rope_char_ptr_proxy(const _Rope_char_ptr_proxy& __x)
- : _M_pos(__x._M_pos), _M_root(__x._M_root) { }
-
- _Rope_char_ptr_proxy() { }
-
- _Rope_char_ptr_proxy(_CharT* __x)
- : _M_root(0), _M_pos(0) { }
-
- _Rope_char_ptr_proxy&
- operator=(const _Rope_char_ptr_proxy& __x)
- {
- _M_pos = __x._M_pos;
- _M_root = __x._M_root;
- return *this;
- }
-
- template<class _CharT2, class _Alloc2>
- friend bool
- operator==(const _Rope_char_ptr_proxy<_CharT2, _Alloc2>& __x,
- const _Rope_char_ptr_proxy<_CharT2, _Alloc2>& __y);
-
- _Rope_char_ref_proxy<_CharT, _Alloc> operator*() const
- { return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root, _M_pos); }
- };
-
- // Rope iterators:
- // Unlike in the C version, we cache only part of the stack
- // for rope iterators, since they must be efficiently copyable.
- // When we run out of cache, we have to reconstruct the iterator
- // value.
- // Pointers from iterators are not included in reference counts.
- // Iterators are assumed to be thread private. Ropes can
- // be shared.
-
- template<class _CharT, class _Alloc>
- class _Rope_iterator_base
- : public std::iterator<std::random_access_iterator_tag, _CharT>
- {
- friend class rope<_CharT, _Alloc>;
- public:
- typedef _Alloc _allocator_type; // used in _Rope_rotate, VC++ workaround
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- // Borland doesn't want this to be protected.
- protected:
- enum { _S_path_cache_len = 4 }; // Must be <= 9.
- enum { _S_iterator_buf_len = 15 };
- size_t _M_current_pos;
- _RopeRep* _M_root; // The whole rope.
- size_t _M_leaf_pos; // Starting position for current leaf
- __GC_CONST _CharT* _M_buf_start;
- // Buffer possibly
- // containing current char.
- __GC_CONST _CharT* _M_buf_ptr;
- // Pointer to current char in buffer.
- // != 0 ==> buffer valid.
- __GC_CONST _CharT* _M_buf_end;
- // One past __last valid char in buffer.
- // What follows is the path cache. We go out of our
- // way to make this compact.
- // Path_end contains the bottom section of the path from
- // the root to the current leaf.
- const _RopeRep* _M_path_end[_S_path_cache_len];
- int _M_leaf_index; // Last valid __pos in path_end;
- // _M_path_end[0] ... _M_path_end[leaf_index-1]
- // point to concatenation nodes.
- unsigned char _M_path_directions;
- // (path_directions >> __i) & 1 is 1
- // iff we got from _M_path_end[leaf_index - __i - 1]
- // to _M_path_end[leaf_index - __i] by going to the
- // __right. Assumes path_cache_len <= 9.
- _CharT _M_tmp_buf[_S_iterator_buf_len];
- // Short buffer for surrounding chars.
- // This is useful primarily for
- // RopeFunctions. We put the buffer
- // here to avoid locking in the
- // multithreaded case.
- // The cached path is generally assumed to be valid
- // only if the buffer is valid.
- static void _S_setbuf(_Rope_iterator_base& __x);
- // Set buffer contents given
- // path cache.
- static void _S_setcache(_Rope_iterator_base& __x);
- // Set buffer contents and
- // path cache.
- static void _S_setcache_for_incr(_Rope_iterator_base& __x);
- // As above, but assumes path
- // cache is valid for previous posn.
- _Rope_iterator_base() { }
-
- _Rope_iterator_base(_RopeRep* __root, size_t __pos)
- : _M_current_pos(__pos), _M_root(__root), _M_buf_ptr(0) { }
-
- void _M_incr(size_t __n);
- void _M_decr(size_t __n);
- public:
- size_t
- index() const
- { return _M_current_pos; }
-
- _Rope_iterator_base(const _Rope_iterator_base& __x)
- {
- if (0 != __x._M_buf_ptr)
- *this = __x;
- else
- {
- _M_current_pos = __x._M_current_pos;
- _M_root = __x._M_root;
- _M_buf_ptr = 0;
- }
- }
- };
-
- template<class _CharT, class _Alloc>
- class _Rope_iterator;
-
- template<class _CharT, class _Alloc>
- class _Rope_const_iterator
- : public _Rope_iterator_base<_CharT, _Alloc>
- {
- friend class rope<_CharT, _Alloc>;
- protected:
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- // The one from the base class may not be directly visible.
- _Rope_const_iterator(const _RopeRep* __root, size_t __pos)
- : _Rope_iterator_base<_CharT, _Alloc>(const_cast<_RopeRep*>(__root),
- __pos)
- // Only nonconst iterators modify root ref count
- { }
- public:
- typedef _CharT reference; // Really a value. Returning a reference
- // Would be a mess, since it would have
- // to be included in refcount.
- typedef const _CharT* pointer;
-
- public:
- _Rope_const_iterator() { };
-
- _Rope_const_iterator(const _Rope_const_iterator& __x)
- : _Rope_iterator_base<_CharT,_Alloc>(__x) { }
-
- _Rope_const_iterator(const _Rope_iterator<_CharT,_Alloc>& __x);
-
- _Rope_const_iterator(const rope<_CharT, _Alloc>& __r, size_t __pos)
- : _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos) { }
-
- _Rope_const_iterator&
- operator=(const _Rope_const_iterator& __x)
- {
- if (0 != __x._M_buf_ptr)
- *(static_cast<_Rope_iterator_base<_CharT, _Alloc>*>(this)) = __x;
- else
- {
- this->_M_current_pos = __x._M_current_pos;
- this->_M_root = __x._M_root;
- this->_M_buf_ptr = 0;
- }
- return(*this);
- }
-
- reference
- operator*()
- {
- if (0 == this->_M_buf_ptr)
- _S_setcache(*this);
- return *this->_M_buf_ptr;
- }
-
- // Without this const version, Rope iterators do not meet the
- // requirements of an Input Iterator.
- reference
- operator*() const
- {
- return *const_cast<_Rope_const_iterator&>(*this);
- }
-
- _Rope_const_iterator&
- operator++()
- {
- __GC_CONST _CharT* __next;
- if (0 != this->_M_buf_ptr
- && (__next = this->_M_buf_ptr + 1) < this->_M_buf_end)
- {
- this->_M_buf_ptr = __next;
- ++this->_M_current_pos;
- }
- else
- this->_M_incr(1);
- return *this;
- }
-
- _Rope_const_iterator&
- operator+=(ptrdiff_t __n)
- {
- if (__n >= 0)
- this->_M_incr(__n);
- else
- this->_M_decr(-__n);
- return *this;
- }
-
- _Rope_const_iterator&
- operator--()
- {
- this->_M_decr(1);
- return *this;
- }
-
- _Rope_const_iterator&
- operator-=(ptrdiff_t __n)
- {
- if (__n >= 0)
- this->_M_decr(__n);
- else
- this->_M_incr(-__n);
- return *this;
- }
-
- _Rope_const_iterator
- operator++(int)
- {
- size_t __old_pos = this->_M_current_pos;
- this->_M_incr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
- // This makes a subsequent dereference expensive.
- // Perhaps we should instead copy the iterator
- // if it has a valid cache?
- }
-
- _Rope_const_iterator
- operator--(int)
- {
- size_t __old_pos = this->_M_current_pos;
- this->_M_decr(1);
- return _Rope_const_iterator<_CharT,_Alloc>(this->_M_root, __old_pos);
- }
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2, _Alloc2>
- operator-(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
- ptrdiff_t __n);
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2, _Alloc2>
- operator+(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
- ptrdiff_t __n);
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_const_iterator<_CharT2, _Alloc2>
- operator+(ptrdiff_t __n,
- const _Rope_const_iterator<_CharT2, _Alloc2>& __x);
-
- reference
- operator[](size_t __n)
- { return rope<_CharT, _Alloc>::_S_fetch(this->_M_root,
- this->_M_current_pos + __n); }
-
- template<class _CharT2, class _Alloc2>
- friend bool
- operator==(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
-
- template<class _CharT2, class _Alloc2>
- friend bool
- operator<(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
-
- template<class _CharT2, class _Alloc2>
- friend ptrdiff_t
- operator-(const _Rope_const_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_const_iterator<_CharT2, _Alloc2>& __y);
- };
-
- template<class _CharT, class _Alloc>
- class _Rope_iterator
- : public _Rope_iterator_base<_CharT, _Alloc>
- {
- friend class rope<_CharT, _Alloc>;
- protected:
- typedef typename _Rope_iterator_base<_CharT, _Alloc>::_RopeRep _RopeRep;
- rope<_CharT, _Alloc>* _M_root_rope;
-
- // root is treated as a cached version of this, and is used to
- // detect changes to the underlying rope.
-
- // Root is included in the reference count. This is necessary
- // so that we can detect changes reliably. Unfortunately, it
- // requires careful bookkeeping for the nonGC case.
- _Rope_iterator(rope<_CharT, _Alloc>* __r, size_t __pos)
- : _Rope_iterator_base<_CharT, _Alloc>(__r->_M_tree_ptr, __pos),
- _M_root_rope(__r)
- { _RopeRep::_S_ref(this->_M_root);
- if (!(__r -> empty()))
- _S_setcache(*this);
- }
-
- void _M_check();
- public:
- typedef _Rope_char_ref_proxy<_CharT, _Alloc> reference;
- typedef _Rope_char_ref_proxy<_CharT, _Alloc>* pointer;
-
- rope<_CharT, _Alloc>&
- container()
- { return *_M_root_rope; }
-
- _Rope_iterator()
- {
- this->_M_root = 0; // Needed for reference counting.
- };
-
- _Rope_iterator(const _Rope_iterator& __x)
- : _Rope_iterator_base<_CharT, _Alloc>(__x)
- {
- _M_root_rope = __x._M_root_rope;
- _RopeRep::_S_ref(this->_M_root);
- }
-
- _Rope_iterator(rope<_CharT, _Alloc>& __r, size_t __pos);
-
- ~_Rope_iterator()
- { _RopeRep::_S_unref(this->_M_root); }
-
- _Rope_iterator&
- operator=(const _Rope_iterator& __x)
- {
- _RopeRep* __old = this->_M_root;
-
- _RopeRep::_S_ref(__x._M_root);
- if (0 != __x._M_buf_ptr)
- {
- _M_root_rope = __x._M_root_rope;
- *(static_cast<_Rope_iterator_base<_CharT, _Alloc>*>(this)) = __x;
- }
- else
- {
- this->_M_current_pos = __x._M_current_pos;
- this->_M_root = __x._M_root;
- _M_root_rope = __x._M_root_rope;
- this->_M_buf_ptr = 0;
- }
- _RopeRep::_S_unref(__old);
- return(*this);
- }
-
- reference
- operator*()
- {
- _M_check();
- if (0 == this->_M_buf_ptr)
- return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
- this->_M_current_pos);
- else
- return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
- this->_M_current_pos,
- *this->_M_buf_ptr);
- }
-
- // See above comment.
- reference
- operator*() const
- {
- return *const_cast<_Rope_iterator&>(*this);
- }
-
- _Rope_iterator&
- operator++()
- {
- this->_M_incr(1);
- return *this;
- }
-
- _Rope_iterator&
- operator+=(ptrdiff_t __n)
- {
- if (__n >= 0)
- this->_M_incr(__n);
- else
- this->_M_decr(-__n);
- return *this;
- }
-
- _Rope_iterator&
- operator--()
- {
- this->_M_decr(1);
- return *this;
- }
-
- _Rope_iterator&
- operator-=(ptrdiff_t __n)
- {
- if (__n >= 0)
- this->_M_decr(__n);
- else
- this->_M_incr(-__n);
- return *this;
- }
-
- _Rope_iterator
- operator++(int)
- {
- size_t __old_pos = this->_M_current_pos;
- this->_M_incr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
-
- _Rope_iterator
- operator--(int)
- {
- size_t __old_pos = this->_M_current_pos;
- this->_M_decr(1);
- return _Rope_iterator<_CharT,_Alloc>(_M_root_rope, __old_pos);
- }
-
- reference
- operator[](ptrdiff_t __n)
- { return _Rope_char_ref_proxy<_CharT, _Alloc>(_M_root_rope,
- this->_M_current_pos
- + __n); }
-
- template<class _CharT2, class _Alloc2>
- friend bool
- operator==(const _Rope_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_iterator<_CharT2, _Alloc2>& __y);
-
- template<class _CharT2, class _Alloc2>
- friend bool
- operator<(const _Rope_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_iterator<_CharT2, _Alloc2>& __y);
-
- template<class _CharT2, class _Alloc2>
- friend ptrdiff_t
- operator-(const _Rope_iterator<_CharT2, _Alloc2>& __x,
- const _Rope_iterator<_CharT2, _Alloc2>& __y);
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2, _Alloc2>
- operator-(const _Rope_iterator<_CharT2, _Alloc2>& __x, ptrdiff_t __n);
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2, _Alloc2>
- operator+(const _Rope_iterator<_CharT2, _Alloc2>& __x, ptrdiff_t __n);
-
- template<class _CharT2, class _Alloc2>
- friend _Rope_iterator<_CharT2, _Alloc2>
- operator+(ptrdiff_t __n, const _Rope_iterator<_CharT2, _Alloc2>& __x);
- };
-
-
- template <class _CharT, class _Alloc>
- struct _Rope_base
- : public _Alloc
- {
- typedef _Alloc allocator_type;
-
- allocator_type
- get_allocator() const
- { return *static_cast<const _Alloc*>(this); }
-
- allocator_type&
- _M_get_allocator()
- { return *static_cast<_Alloc*>(this); }
-
- const allocator_type&
- _M_get_allocator() const
- { return *static_cast<const _Alloc*>(this); }
-
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- // The one in _Base may not be visible due to template rules.
-
- _Rope_base(_RopeRep* __t, const allocator_type&)
- : _M_tree_ptr(__t) { }
-
- _Rope_base(const allocator_type&) { }
-
- // The only data member of a rope:
- _RopeRep *_M_tree_ptr;
-
-#define __ROPE_DEFINE_ALLOC(_Tp, __name) \
- typedef typename \
- _Alloc::template rebind<_Tp>::other __name##Alloc; \
- static _Tp* __name##_allocate(size_t __n) \
- { return __name##Alloc().allocate(__n); } \
- static void __name##_deallocate(_Tp *__p, size_t __n) \
- { __name##Alloc().deallocate(__p, __n); }
- __ROPE_DEFINE_ALLOCS(_Alloc)
-#undef __ROPE_DEFINE_ALLOC
-
- protected:
- _Rope_base&
- operator=(const _Rope_base&);
-
- _Rope_base(const _Rope_base&);
- };
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template <class _CharT, class _Alloc>
- class rope : public _Rope_base<_CharT, _Alloc>
- {
- public:
- typedef _CharT value_type;
- typedef ptrdiff_t difference_type;
- typedef size_t size_type;
- typedef _CharT const_reference;
- typedef const _CharT* const_pointer;
- typedef _Rope_iterator<_CharT, _Alloc> iterator;
- typedef _Rope_const_iterator<_CharT, _Alloc> const_iterator;
- typedef _Rope_char_ref_proxy<_CharT, _Alloc> reference;
- typedef _Rope_char_ptr_proxy<_CharT, _Alloc> pointer;
-
- friend class _Rope_iterator<_CharT, _Alloc>;
- friend class _Rope_const_iterator<_CharT, _Alloc>;
- friend struct _Rope_RopeRep<_CharT, _Alloc>;
- friend class _Rope_iterator_base<_CharT, _Alloc>;
- friend class _Rope_char_ptr_proxy<_CharT, _Alloc>;
- friend class _Rope_char_ref_proxy<_CharT, _Alloc>;
- friend struct _Rope_RopeSubstring<_CharT, _Alloc>;
-
- protected:
- typedef _Rope_base<_CharT, _Alloc> _Base;
- typedef typename _Base::allocator_type allocator_type;
- using _Base::_M_tree_ptr;
- using _Base::get_allocator;
- using _Base::_M_get_allocator;
- typedef __GC_CONST _CharT* _Cstrptr;
-
- static _CharT _S_empty_c_str[1];
-
- static bool
- _S_is0(_CharT __c)
- { return __c == _S_eos((_CharT*)0); }
-
- enum { _S_copy_max = 23 };
- // For strings shorter than _S_copy_max, we copy to
- // concatenate.
-
- typedef _Rope_RopeRep<_CharT, _Alloc> _RopeRep;
- typedef _Rope_RopeConcatenation<_CharT, _Alloc> _RopeConcatenation;
- typedef _Rope_RopeLeaf<_CharT, _Alloc> _RopeLeaf;
- typedef _Rope_RopeFunction<_CharT, _Alloc> _RopeFunction;
- typedef _Rope_RopeSubstring<_CharT, _Alloc> _RopeSubstring;
-
- // Retrieve a character at the indicated position.
- static _CharT _S_fetch(_RopeRep* __r, size_type __pos);
-
-#ifndef __GC
- // Obtain a pointer to the character at the indicated position.
- // The pointer can be used to change the character.
- // If such a pointer cannot be produced, as is frequently the
- // case, 0 is returned instead.
- // (Returns nonzero only if all nodes in the path have a refcount
- // of 1.)
- static _CharT* _S_fetch_ptr(_RopeRep* __r, size_type __pos);
-#endif
-
- static bool
- _S_apply_to_pieces(// should be template parameter
- _Rope_char_consumer<_CharT>& __c,
- const _RopeRep* __r,
- size_t __begin, size_t __end);
- // begin and end are assumed to be in range.
-
-#ifndef __GC
- static void
- _S_unref(_RopeRep* __t)
- { _RopeRep::_S_unref(__t); }
-
- static void
- _S_ref(_RopeRep* __t)
- { _RopeRep::_S_ref(__t); }
-
-#else /* __GC */
- static void _S_unref(_RopeRep*) { }
- static void _S_ref(_RopeRep*) { }
-#endif
-
-#ifdef __GC
- typedef _Rope_RopeRep<_CharT, _Alloc>* _Self_destruct_ptr;
-#else
- typedef _Rope_self_destruct_ptr<_CharT, _Alloc> _Self_destruct_ptr;
-#endif
-
- // _Result is counted in refcount.
- static _RopeRep* _S_substring(_RopeRep* __base,
- size_t __start, size_t __endp1);
-
- static _RopeRep* _S_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate rope and char ptr, copying __s.
- // Should really take an arbitrary iterator.
- // Result is counted in refcount.
- static _RopeRep* _S_destr_concat_char_iter(_RopeRep* __r,
- const _CharT* __iter,
- size_t __slen)
- // As above, but one reference to __r is about to be
- // destroyed. Thus the pieces may be recycled if all
- // relevant reference counts are 1.
-#ifdef __GC
- // We can't really do anything since refcounts are unavailable.
- { return _S_concat_char_iter(__r, __iter, __slen); }
-#else
- ;
-#endif
-
- static _RopeRep* _S_concat(_RopeRep* __left, _RopeRep* __right);
- // General concatenation on _RopeRep. _Result
- // has refcount of 1. Adjusts argument refcounts.
-
- public:
- void
- apply_to_pieces(size_t __begin, size_t __end,
- _Rope_char_consumer<_CharT>& __c) const
- { _S_apply_to_pieces(__c, this->_M_tree_ptr, __begin, __end); }
-
- protected:
-
- static size_t
- _S_rounded_up_size(size_t __n)
- { return _RopeLeaf::_S_rounded_up_size(__n); }
-
- static size_t
- _S_allocated_capacity(size_t __n)
- {
- if (_S_is_basic_char_type((_CharT*)0))
- return _S_rounded_up_size(__n) - 1;
- else
- return _S_rounded_up_size(__n);
-
- }
-
- // Allocate and construct a RopeLeaf using the supplied allocator
- // Takes ownership of s instead of copying.
- static _RopeLeaf*
- _S_new_RopeLeaf(__GC_CONST _CharT *__s,
- size_t __size, allocator_type& __a)
- {
- _RopeLeaf* __space = typename _Base::_LAlloc(__a).allocate(1);
- return new(__space) _RopeLeaf(__s, __size, __a);
- }
-
- static _RopeConcatenation*
- _S_new_RopeConcatenation(_RopeRep* __left, _RopeRep* __right,
- allocator_type& __a)
- {
- _RopeConcatenation* __space = typename _Base::_CAlloc(__a).allocate(1);
- return new(__space) _RopeConcatenation(__left, __right, __a);
- }
-
- static _RopeFunction*
- _S_new_RopeFunction(char_producer<_CharT>* __f,
- size_t __size, bool __d, allocator_type& __a)
- {
- _RopeFunction* __space = typename _Base::_FAlloc(__a).allocate(1);
- return new(__space) _RopeFunction(__f, __size, __d, __a);
- }
-
- static _RopeSubstring*
- _S_new_RopeSubstring(_Rope_RopeRep<_CharT,_Alloc>* __b, size_t __s,
- size_t __l, allocator_type& __a)
- {
- _RopeSubstring* __space = typename _Base::_SAlloc(__a).allocate(1);
- return new(__space) _RopeSubstring(__b, __s, __l, __a);
- }
-
- static _RopeLeaf*
- _S_RopeLeaf_from_unowned_char_ptr(const _CharT *__s,
- size_t __size, allocator_type& __a)
-#define __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __size, __a) \
- _S_RopeLeaf_from_unowned_char_ptr(__s, __size, __a)
- {
- if (0 == __size)
- return 0;
- _CharT* __buf = __a.allocate(_S_rounded_up_size(__size));
-
- __uninitialized_copy_n_a(__s, __size, __buf, __a);
- _S_cond_store_eos(__buf[__size]);
- __try
- { return _S_new_RopeLeaf(__buf, __size, __a); }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__buf, __size, __a);
- __throw_exception_again;
- }
- }
-
- // Concatenation of nonempty strings.
- // Always builds a concatenation node.
- // Rebalances if the result is too deep.
- // Result has refcount 1.
- // Does not increment left and right ref counts even though
- // they are referenced.
- static _RopeRep*
- _S_tree_concat(_RopeRep* __left, _RopeRep* __right);
-
- // Concatenation helper functions
- static _RopeLeaf*
- _S_leaf_concat_char_iter(_RopeLeaf* __r,
- const _CharT* __iter, size_t __slen);
- // Concatenate by copying leaf.
- // should take an arbitrary iterator
- // result has refcount 1.
-#ifndef __GC
- static _RopeLeaf*
- _S_destr_leaf_concat_char_iter(_RopeLeaf* __r,
- const _CharT* __iter, size_t __slen);
- // A version that potentially clobbers __r if __r->_M_ref_count == 1.
-#endif
-
- private:
-
- static size_t _S_char_ptr_len(const _CharT* __s);
- // slightly generalized strlen
-
- rope(_RopeRep* __t, const allocator_type& __a = allocator_type())
- : _Base(__t, __a) { }
-
-
- // Copy __r to the _CharT buffer.
- // Returns __buffer + __r->_M_size.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r, _CharT* __buffer);
-
- // Again, with explicit starting position and length.
- // Assumes that buffer is uninitialized.
- static _CharT* _S_flatten(_RopeRep* __r,
- size_t __start, size_t __len,
- _CharT* __buffer);
-
- static const unsigned long
- _S_min_len[__detail::_S_max_rope_depth + 1];
-
- static bool
- _S_is_balanced(_RopeRep* __r)
- { return (__r->_M_size >= _S_min_len[__r->_M_depth]); }
-
- static bool
- _S_is_almost_balanced(_RopeRep* __r)
- { return (__r->_M_depth == 0
- || __r->_M_size >= _S_min_len[__r->_M_depth - 1]); }
-
- static bool
- _S_is_roughly_balanced(_RopeRep* __r)
- { return (__r->_M_depth <= 1
- || __r->_M_size >= _S_min_len[__r->_M_depth - 2]); }
-
- // Assumes the result is not empty.
- static _RopeRep*
- _S_concat_and_set_balanced(_RopeRep* __left, _RopeRep* __right)
- {
- _RopeRep* __result = _S_concat(__left, __right);
- if (_S_is_balanced(__result))
- __result->_M_is_balanced = true;
- return __result;
- }
-
- // The basic rebalancing operation. Logically copies the
- // rope. The result has refcount of 1. The client will
- // usually decrement the reference count of __r.
- // The result is within height 2 of balanced by the above
- // definition.
- static _RopeRep* _S_balance(_RopeRep* __r);
-
- // Add all unbalanced subtrees to the forest of balanced trees.
- // Used only by balance.
- static void _S_add_to_forest(_RopeRep*__r, _RopeRep** __forest);
-
- // Add __r to forest, assuming __r is already balanced.
- static void _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest);
-
- // Print to stdout, exposing structure
- static void _S_dump(_RopeRep* __r, int __indent = 0);
-
- // Return -1, 0, or 1 if __x < __y, __x == __y, or __x > __y resp.
- static int _S_compare(const _RopeRep* __x, const _RopeRep* __y);
-
- public:
- bool
- empty() const
- { return 0 == this->_M_tree_ptr; }
-
- // Comparison member function. This is public only for those
- // clients that need a ternary comparison. Others
- // should use the comparison operators below.
- int
- compare(const rope& __y) const
- { return _S_compare(this->_M_tree_ptr, __y._M_tree_ptr); }
-
- rope(const _CharT* __s, const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- this->_M_tree_ptr =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, _S_char_ptr_len(__s),
- _M_get_allocator());
- }
-
- rope(const _CharT* __s, size_t __len,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- this->_M_tree_ptr =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __len, _M_get_allocator());
- }
-
- // Should perhaps be templatized with respect to the iterator type
- // and use Sequence_buffer. (It should perhaps use sequence_buffer
- // even now.)
- rope(const _CharT* __s, const _CharT* __e,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- this->_M_tree_ptr =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __e - __s, _M_get_allocator());
- }
-
- rope(const const_iterator& __s, const const_iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(const iterator& __s, const iterator& __e,
- const allocator_type& __a = allocator_type())
- : _Base(_S_substring(__s._M_root, __s._M_current_pos,
- __e._M_current_pos), __a)
- { }
-
- rope(_CharT __c, const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- _CharT* __buf = this->_Data_allocate(_S_rounded_up_size(1));
-
- _M_get_allocator().construct(__buf, __c);
- __try
- {
- this->_M_tree_ptr = _S_new_RopeLeaf(__buf, 1,
- _M_get_allocator());
- }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__buf, 1, _M_get_allocator());
- __throw_exception_again;
- }
- }
-
- rope(size_t __n, _CharT __c,
- const allocator_type& __a = allocator_type());
-
- rope(const allocator_type& __a = allocator_type())
- : _Base(0, __a) { }
-
- // Construct a rope from a function that can compute its members
- rope(char_producer<_CharT> *__fn, size_t __len, bool __delete_fn,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- {
- this->_M_tree_ptr = (0 == __len) ?
- 0 : _S_new_RopeFunction(__fn, __len, __delete_fn, __a);
- }
-
- rope(const rope& __x, const allocator_type& __a = allocator_type())
- : _Base(__x._M_tree_ptr, __a)
- { _S_ref(this->_M_tree_ptr); }
-
- ~rope() throw()
- { _S_unref(this->_M_tree_ptr); }
-
- rope&
- operator=(const rope& __x)
- {
- _RopeRep* __old = this->_M_tree_ptr;
- this->_M_tree_ptr = __x._M_tree_ptr;
- _S_ref(this->_M_tree_ptr);
- _S_unref(__old);
- return *this;
- }
-
- void
- clear()
- {
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = 0;
- }
-
- void
- push_back(_CharT __x)
- {
- _RopeRep* __old = this->_M_tree_ptr;
- this->_M_tree_ptr
- = _S_destr_concat_char_iter(this->_M_tree_ptr, &__x, 1);
- _S_unref(__old);
- }
-
- void
- pop_back()
- {
- _RopeRep* __old = this->_M_tree_ptr;
- this->_M_tree_ptr = _S_substring(this->_M_tree_ptr,
- 0, this->_M_tree_ptr->_M_size - 1);
- _S_unref(__old);
- }
-
- _CharT
- back() const
- { return _S_fetch(this->_M_tree_ptr, this->_M_tree_ptr->_M_size - 1); }
-
- void
- push_front(_CharT __x)
- {
- _RopeRep* __old = this->_M_tree_ptr;
- _RopeRep* __left =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(&__x, 1, _M_get_allocator());
- __try
- {
- this->_M_tree_ptr = _S_concat(__left, this->_M_tree_ptr);
- _S_unref(__old);
- _S_unref(__left);
- }
- __catch(...)
- {
- _S_unref(__left);
- __throw_exception_again;
- }
- }
-
- void
- pop_front()
- {
- _RopeRep* __old = this->_M_tree_ptr;
- this->_M_tree_ptr
- = _S_substring(this->_M_tree_ptr, 1, this->_M_tree_ptr->_M_size);
- _S_unref(__old);
- }
-
- _CharT
- front() const
- { return _S_fetch(this->_M_tree_ptr, 0); }
-
- void
- balance()
- {
- _RopeRep* __old = this->_M_tree_ptr;
- this->_M_tree_ptr = _S_balance(this->_M_tree_ptr);
- _S_unref(__old);
- }
-
- void
- copy(_CharT* __buffer) const
- {
- _Destroy_const(__buffer, __buffer + size(), _M_get_allocator());
- _S_flatten(this->_M_tree_ptr, __buffer);
- }
-
- // This is the copy function from the standard, but
- // with the arguments reordered to make it consistent with the
- // rest of the interface.
- // Note that this guaranteed not to compile if the draft standard
- // order is assumed.
- size_type
- copy(size_type __pos, size_type __n, _CharT* __buffer) const
- {
- size_t __size = size();
- size_t __len = (__pos + __n > __size? __size - __pos : __n);
-
- _Destroy_const(__buffer, __buffer + __len, _M_get_allocator());
- _S_flatten(this->_M_tree_ptr, __pos, __len, __buffer);
- return __len;
- }
-
- // Print to stdout, exposing structure. May be useful for
- // performance debugging.
- void
- dump()
- { _S_dump(this->_M_tree_ptr); }
-
- // Convert to 0 terminated string in new allocated memory.
- // Embedded 0s in the input do not terminate the copy.
- const _CharT* c_str() const;
-
- // As above, but also use the flattened representation as
- // the new rope representation.
- const _CharT* replace_with_c_str();
-
- // Reclaim memory for the c_str generated flattened string.
- // Intentionally undocumented, since it's hard to say when this
- // is safe for multiple threads.
- void
- delete_c_str ()
- {
- if (0 == this->_M_tree_ptr)
- return;
- if (__detail::_S_leaf == this->_M_tree_ptr->_M_tag &&
- ((_RopeLeaf*)this->_M_tree_ptr)->_M_data ==
- this->_M_tree_ptr->_M_c_string)
- {
- // Representation shared
- return;
- }
-#ifndef __GC
- this->_M_tree_ptr->_M_free_c_string();
-#endif
- this->_M_tree_ptr->_M_c_string = 0;
- }
-
- _CharT
- operator[] (size_type __pos) const
- { return _S_fetch(this->_M_tree_ptr, __pos); }
-
- _CharT
- at(size_type __pos) const
- {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- const_iterator
- begin() const
- { return(const_iterator(this->_M_tree_ptr, 0)); }
-
- // An easy way to get a const iterator from a non-const container.
- const_iterator
- const_begin() const
- { return(const_iterator(this->_M_tree_ptr, 0)); }
-
- const_iterator
- end() const
- { return(const_iterator(this->_M_tree_ptr, size())); }
-
- const_iterator
- const_end() const
- { return(const_iterator(this->_M_tree_ptr, size())); }
-
- size_type
- size() const
- { return(0 == this->_M_tree_ptr? 0 : this->_M_tree_ptr->_M_size); }
-
- size_type
- length() const
- { return size(); }
-
- size_type
- max_size() const
- {
- return _S_min_len[int(__detail::_S_max_rope_depth) - 1] - 1;
- // Guarantees that the result can be sufficiently
- // balanced. Longer ropes will probably still work,
- // but it's harder to make guarantees.
- }
-
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-
- const_reverse_iterator
- rbegin() const
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- const_rbegin() const
- { return const_reverse_iterator(end()); }
-
- const_reverse_iterator
- rend() const
- { return const_reverse_iterator(begin()); }
-
- const_reverse_iterator
- const_rend() const
- { return const_reverse_iterator(begin()); }
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2, _Alloc2>
- operator+(const rope<_CharT2, _Alloc2>& __left,
- const rope<_CharT2, _Alloc2>& __right);
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2, _Alloc2>
- operator+(const rope<_CharT2, _Alloc2>& __left, const _CharT2* __right);
-
- template<class _CharT2, class _Alloc2>
- friend rope<_CharT2, _Alloc2>
- operator+(const rope<_CharT2, _Alloc2>& __left, _CharT2 __right);
-
- // The symmetric cases are intentionally omitted, since they're
- // presumed to be less common, and we don't handle them as well.
-
- // The following should really be templatized. The first
- // argument should be an input iterator or forward iterator with
- // value_type _CharT.
- rope&
- append(const _CharT* __iter, size_t __n)
- {
- _RopeRep* __result =
- _S_destr_concat_char_iter(this->_M_tree_ptr, __iter, __n);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- return *this;
- }
-
- rope&
- append(const _CharT* __c_string)
- {
- size_t __len = _S_char_ptr_len(__c_string);
- append(__c_string, __len);
- return(*this);
- }
-
- rope&
- append(const _CharT* __s, const _CharT* __e)
- {
- _RopeRep* __result =
- _S_destr_concat_char_iter(this->_M_tree_ptr, __s, __e - __s);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- return *this;
- }
-
- rope&
- append(const_iterator __s, const_iterator __e)
- {
- _Self_destruct_ptr __appendee(_S_substring(__s._M_root,
- __s._M_current_pos,
- __e._M_current_pos));
- _RopeRep* __result = _S_concat(this->_M_tree_ptr,
- (_RopeRep*)__appendee);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- return *this;
- }
-
- rope&
- append(_CharT __c)
- {
- _RopeRep* __result =
- _S_destr_concat_char_iter(this->_M_tree_ptr, &__c, 1);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- return *this;
- }
-
- rope&
- append()
- { return append(_CharT()); } // XXX why?
-
- rope&
- append(const rope& __y)
- {
- _RopeRep* __result = _S_concat(this->_M_tree_ptr, __y._M_tree_ptr);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- return *this;
- }
-
- rope&
- append(size_t __n, _CharT __c)
- {
- rope<_CharT,_Alloc> __last(__n, __c);
- return append(__last);
- }
-
- void
- swap(rope& __b)
- {
- _RopeRep* __tmp = this->_M_tree_ptr;
- this->_M_tree_ptr = __b._M_tree_ptr;
- __b._M_tree_ptr = __tmp;
- }
-
- protected:
- // Result is included in refcount.
- static _RopeRep*
- replace(_RopeRep* __old, size_t __pos1,
- size_t __pos2, _RopeRep* __r)
- {
- if (0 == __old)
- {
- _S_ref(__r);
- return __r;
- }
- _Self_destruct_ptr __left(_S_substring(__old, 0, __pos1));
- _Self_destruct_ptr __right(_S_substring(__old, __pos2, __old->_M_size));
- _RopeRep* __result;
-
- if (0 == __r)
- __result = _S_concat(__left, __right);
- else
- {
- _Self_destruct_ptr __left_result(_S_concat(__left, __r));
- __result = _S_concat(__left_result, __right);
- }
- return __result;
- }
-
- public:
- void
- insert(size_t __p, const rope& __r)
- {
- _RopeRep* __result =
- replace(this->_M_tree_ptr, __p, __p, __r._M_tree_ptr);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- }
-
- void
- insert(size_t __p, size_t __n, _CharT __c)
- {
- rope<_CharT,_Alloc> __r(__n,__c);
- insert(__p, __r);
- }
-
- void
- insert(size_t __p, const _CharT* __i, size_t __n)
- {
- _Self_destruct_ptr __left(_S_substring(this->_M_tree_ptr, 0, __p));
- _Self_destruct_ptr __right(_S_substring(this->_M_tree_ptr,
- __p, size()));
- _Self_destruct_ptr __left_result(_S_concat_char_iter(__left, __i, __n));
- // _S_ destr_concat_char_iter should be safe here.
- // But as it stands it's probably not a win, since __left
- // is likely to have additional references.
- _RopeRep* __result = _S_concat(__left_result, __right);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- }
-
- void
- insert(size_t __p, const _CharT* __c_string)
- { insert(__p, __c_string, _S_char_ptr_len(__c_string)); }
-
- void
- insert(size_t __p, _CharT __c)
- { insert(__p, &__c, 1); }
-
- void
- insert(size_t __p)
- {
- _CharT __c = _CharT();
- insert(__p, &__c, 1);
- }
-
- void
- insert(size_t __p, const _CharT* __i, const _CharT* __j)
- {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void
- insert(size_t __p, const const_iterator& __i,
- const const_iterator& __j)
- {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- void
- insert(size_t __p, const iterator& __i,
- const iterator& __j)
- {
- rope __r(__i, __j);
- insert(__p, __r);
- }
-
- // (position, length) versions of replace operations:
-
- void
- replace(size_t __p, size_t __n, const rope& __r)
- {
- _RopeRep* __result =
- replace(this->_M_tree_ptr, __p, __p + __n, __r._M_tree_ptr);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- }
-
- void
- replace(size_t __p, size_t __n,
- const _CharT* __i, size_t __i_len)
- {
- rope __r(__i, __i_len);
- replace(__p, __n, __r);
- }
-
- void
- replace(size_t __p, size_t __n, _CharT __c)
- {
- rope __r(__c);
- replace(__p, __n, __r);
- }
-
- void
- replace(size_t __p, size_t __n, const _CharT* __c_string)
- {
- rope __r(__c_string);
- replace(__p, __n, __r);
- }
-
- void
- replace(size_t __p, size_t __n,
- const _CharT* __i, const _CharT* __j)
- {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void
- replace(size_t __p, size_t __n,
- const const_iterator& __i, const const_iterator& __j)
- {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- void
- replace(size_t __p, size_t __n,
- const iterator& __i, const iterator& __j)
- {
- rope __r(__i, __j);
- replace(__p, __n, __r);
- }
-
- // Single character variants:
- void
- replace(size_t __p, _CharT __c)
- {
- iterator __i(this, __p);
- *__i = __c;
- }
-
- void
- replace(size_t __p, const rope& __r)
- { replace(__p, 1, __r); }
-
- void
- replace(size_t __p, const _CharT* __i, size_t __i_len)
- { replace(__p, 1, __i, __i_len); }
-
- void
- replace(size_t __p, const _CharT* __c_string)
- { replace(__p, 1, __c_string); }
-
- void
- replace(size_t __p, const _CharT* __i, const _CharT* __j)
- { replace(__p, 1, __i, __j); }
-
- void
- replace(size_t __p, const const_iterator& __i,
- const const_iterator& __j)
- { replace(__p, 1, __i, __j); }
-
- void
- replace(size_t __p, const iterator& __i,
- const iterator& __j)
- { replace(__p, 1, __i, __j); }
-
- // Erase, (position, size) variant.
- void
- erase(size_t __p, size_t __n)
- {
- _RopeRep* __result = replace(this->_M_tree_ptr, __p,
- __p + __n, 0);
- _S_unref(this->_M_tree_ptr);
- this->_M_tree_ptr = __result;
- }
-
- // Erase, single character
- void
- erase(size_t __p)
- { erase(__p, __p + 1); }
-
- // Insert, iterator variants.
- iterator
- insert(const iterator& __p, const rope& __r)
- {
- insert(__p.index(), __r);
- return __p;
- }
-
- iterator
- insert(const iterator& __p, size_t __n, _CharT __c)
- {
- insert(__p.index(), __n, __c);
- return __p;
- }
-
- iterator insert(const iterator& __p, _CharT __c)
- {
- insert(__p.index(), __c);
- return __p;
- }
-
- iterator
- insert(const iterator& __p )
- {
- insert(__p.index());
- return __p;
- }
-
- iterator
- insert(const iterator& __p, const _CharT* c_string)
- {
- insert(__p.index(), c_string);
- return __p;
- }
-
- iterator
- insert(const iterator& __p, const _CharT* __i, size_t __n)
- {
- insert(__p.index(), __i, __n);
- return __p;
- }
-
- iterator
- insert(const iterator& __p, const _CharT* __i,
- const _CharT* __j)
- {
- insert(__p.index(), __i, __j);
- return __p;
- }
-
- iterator
- insert(const iterator& __p,
- const const_iterator& __i, const const_iterator& __j)
- {
- insert(__p.index(), __i, __j);
- return __p;
- }
-
- iterator
- insert(const iterator& __p,
- const iterator& __i, const iterator& __j)
- {
- insert(__p.index(), __i, __j);
- return __p;
- }
-
- // Replace, range variants.
- void
- replace(const iterator& __p, const iterator& __q, const rope& __r)
- { replace(__p.index(), __q.index() - __p.index(), __r); }
-
- void
- replace(const iterator& __p, const iterator& __q, _CharT __c)
- { replace(__p.index(), __q.index() - __p.index(), __c); }
-
- void
- replace(const iterator& __p, const iterator& __q,
- const _CharT* __c_string)
- { replace(__p.index(), __q.index() - __p.index(), __c_string); }
-
- void
- replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, size_t __n)
- { replace(__p.index(), __q.index() - __p.index(), __i, __n); }
-
- void
- replace(const iterator& __p, const iterator& __q,
- const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
-
- void
- replace(const iterator& __p, const iterator& __q,
- const const_iterator& __i, const const_iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
-
- void
- replace(const iterator& __p, const iterator& __q,
- const iterator& __i, const iterator& __j)
- { replace(__p.index(), __q.index() - __p.index(), __i, __j); }
-
- // Replace, iterator variants.
- void
- replace(const iterator& __p, const rope& __r)
- { replace(__p.index(), __r); }
-
- void
- replace(const iterator& __p, _CharT __c)
- { replace(__p.index(), __c); }
-
- void
- replace(const iterator& __p, const _CharT* __c_string)
- { replace(__p.index(), __c_string); }
-
- void
- replace(const iterator& __p, const _CharT* __i, size_t __n)
- { replace(__p.index(), __i, __n); }
-
- void
- replace(const iterator& __p, const _CharT* __i, const _CharT* __j)
- { replace(__p.index(), __i, __j); }
-
- void
- replace(const iterator& __p, const_iterator __i, const_iterator __j)
- { replace(__p.index(), __i, __j); }
-
- void
- replace(const iterator& __p, iterator __i, iterator __j)
- { replace(__p.index(), __i, __j); }
-
- // Iterator and range variants of erase
- iterator
- erase(const iterator& __p, const iterator& __q)
- {
- size_t __p_index = __p.index();
- erase(__p_index, __q.index() - __p_index);
- return iterator(this, __p_index);
- }
-
- iterator
- erase(const iterator& __p)
- {
- size_t __p_index = __p.index();
- erase(__p_index, 1);
- return iterator(this, __p_index);
- }
-
- rope
- substr(size_t __start, size_t __len = 1) const
- {
- return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
- __start,
- __start + __len));
- }
-
- rope
- substr(iterator __start, iterator __end) const
- {
- return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
- __start.index(),
- __end.index()));
- }
-
- rope
- substr(iterator __start) const
- {
- size_t __pos = __start.index();
- return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
- __pos, __pos + 1));
- }
-
- rope
- substr(const_iterator __start, const_iterator __end) const
- {
- // This might eventually take advantage of the cache in the
- // iterator.
- return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
- __start.index(),
- __end.index()));
- }
-
- rope<_CharT, _Alloc>
- substr(const_iterator __start)
- {
- size_t __pos = __start.index();
- return rope<_CharT, _Alloc>(_S_substring(this->_M_tree_ptr,
- __pos, __pos + 1));
- }
-
- static const size_type npos;
-
- size_type find(_CharT __c, size_type __pos = 0) const;
-
- size_type
- find(const _CharT* __s, size_type __pos = 0) const
- {
- size_type __result_pos;
- const_iterator __result =
- std::search(const_begin() + __pos, const_end(),
- __s, __s + _S_char_ptr_len(__s));
- __result_pos = __result.index();
-#ifndef __STL_OLD_ROPE_SEMANTICS
- if (__result_pos == size())
- __result_pos = npos;
-#endif
- return __result_pos;
- }
-
- iterator
- mutable_begin()
- { return(iterator(this, 0)); }
-
- iterator
- mutable_end()
- { return(iterator(this, size())); }
-
- typedef std::reverse_iterator<iterator> reverse_iterator;
-
- reverse_iterator
- mutable_rbegin()
- { return reverse_iterator(mutable_end()); }
-
- reverse_iterator
- mutable_rend()
- { return reverse_iterator(mutable_begin()); }
-
- reference
- mutable_reference_at(size_type __pos)
- { return reference(this, __pos); }
-
-#ifdef __STD_STUFF
- reference
- operator[] (size_type __pos)
- { return _char_ref_proxy(this, __pos); }
-
- reference
- at(size_type __pos)
- {
- // if (__pos >= size()) throw out_of_range; // XXX
- return (*this)[__pos];
- }
-
- void resize(size_type __n, _CharT __c) { }
- void resize(size_type __n) { }
- void reserve(size_type __res_arg = 0) { }
-
- size_type
- capacity() const
- { return max_size(); }
-
- // Stuff below this line is dangerous because it's error prone.
- // I would really like to get rid of it.
- // copy function with funny arg ordering.
- size_type
- copy(_CharT* __buffer, size_type __n,
- size_type __pos = 0) const
- { return copy(__pos, __n, __buffer); }
-
- iterator
- end()
- { return mutable_end(); }
-
- iterator
- begin()
- { return mutable_begin(); }
-
- reverse_iterator
- rend()
- { return mutable_rend(); }
-
- reverse_iterator
- rbegin()
- { return mutable_rbegin(); }
-
-#else
- const_iterator
- end()
- { return const_end(); }
-
- const_iterator
- begin()
- { return const_begin(); }
-
- const_reverse_iterator
- rend()
- { return const_rend(); }
-
- const_reverse_iterator
- rbegin()
- { return const_rbegin(); }
-
-#endif
- };
-
- template <class _CharT, class _Alloc>
- const typename rope<_CharT, _Alloc>::size_type
- rope<_CharT, _Alloc>::npos = (size_type)(-1);
-
- template <class _CharT, class _Alloc>
- inline bool operator==(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return (__x._M_current_pos == __y._M_current_pos
- && __x._M_root == __y._M_root); }
-
- template <class _CharT, class _Alloc>
- inline bool operator<(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return (__x._M_current_pos < __y._M_current_pos); }
-
- template <class _CharT, class _Alloc>
- inline bool operator!=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return !(__x == __y); }
-
- template <class _CharT, class _Alloc>
- inline bool operator>(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return __y < __x; }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator<=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return !(__y < __x); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator>=(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return !(__x < __y); }
-
- template <class _CharT, class _Alloc>
- inline ptrdiff_t
- operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x,
- const _Rope_const_iterator<_CharT, _Alloc>& __y)
- { return (ptrdiff_t)__x._M_current_pos - (ptrdiff_t)__y._M_current_pos; }
-
- template <class _CharT, class _Alloc>
- inline _Rope_const_iterator<_CharT, _Alloc>
- operator-(const _Rope_const_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
- { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
- __x._M_current_pos - __n); }
-
- template <class _CharT, class _Alloc>
- inline _Rope_const_iterator<_CharT, _Alloc>
- operator+(const _Rope_const_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
- { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
- __x._M_current_pos + __n); }
-
- template <class _CharT, class _Alloc>
- inline _Rope_const_iterator<_CharT, _Alloc>
- operator+(ptrdiff_t __n, const _Rope_const_iterator<_CharT, _Alloc>& __x)
- { return _Rope_const_iterator<_CharT, _Alloc>(__x._M_root,
- __x._M_current_pos + __n); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator==(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- {return (__x._M_current_pos == __y._M_current_pos
- && __x._M_root_rope == __y._M_root_rope); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator<(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return (__x._M_current_pos < __y._M_current_pos); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator!=(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return !(__x == __y); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator>(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return __y < __x; }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator<=(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return !(__y < __x); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator>=(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return !(__x < __y); }
-
- template <class _CharT, class _Alloc>
- inline ptrdiff_t
- operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
- const _Rope_iterator<_CharT, _Alloc>& __y)
- { return ((ptrdiff_t)__x._M_current_pos
- - (ptrdiff_t)__y._M_current_pos); }
-
- template <class _CharT, class _Alloc>
- inline _Rope_iterator<_CharT, _Alloc>
- operator-(const _Rope_iterator<_CharT, _Alloc>& __x,
- ptrdiff_t __n)
- { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
- __x._M_current_pos - __n); }
-
- template <class _CharT, class _Alloc>
- inline _Rope_iterator<_CharT, _Alloc>
- operator+(const _Rope_iterator<_CharT, _Alloc>& __x, ptrdiff_t __n)
- { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
- __x._M_current_pos + __n); }
-
- template <class _CharT, class _Alloc>
- inline _Rope_iterator<_CharT, _Alloc>
- operator+(ptrdiff_t __n, const _Rope_iterator<_CharT, _Alloc>& __x)
- { return _Rope_iterator<_CharT, _Alloc>(__x._M_root_rope,
- __x._M_current_pos + __n); }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left,
- const rope<_CharT, _Alloc>& __right)
- {
- // Inlining this should make it possible to keep __left and
- // __right in registers.
- typedef rope<_CharT, _Alloc> rope_type;
- return rope_type(rope_type::_S_concat(__left._M_tree_ptr,
- __right._M_tree_ptr));
- }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>&
- operator+=(rope<_CharT, _Alloc>& __left,
- const rope<_CharT, _Alloc>& __right)
- {
- __left.append(__right);
- return __left;
- }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left,
- const _CharT* __right)
- {
- typedef rope<_CharT, _Alloc> rope_type;
- size_t __rlen = rope_type::_S_char_ptr_len(__right);
- return rope_type(rope_type::_S_concat_char_iter(__left._M_tree_ptr,
- __right, __rlen));
- }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>&
- operator+=(rope<_CharT, _Alloc>& __left,
- const _CharT* __right)
- {
- __left.append(__right);
- return __left;
- }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>
- operator+(const rope<_CharT, _Alloc>& __left, _CharT __right)
- {
- typedef rope<_CharT, _Alloc> rope_type;
- return rope_type(rope_type::_S_concat_char_iter(__left._M_tree_ptr,
- &__right, 1));
- }
-
- template <class _CharT, class _Alloc>
- inline rope<_CharT, _Alloc>&
- operator+=(rope<_CharT, _Alloc>& __left, _CharT __right)
- {
- __left.append(__right);
- return __left;
- }
-
- template <class _CharT, class _Alloc>
- bool
- operator<(const rope<_CharT, _Alloc>& __left,
- const rope<_CharT, _Alloc>& __right)
- { return __left.compare(__right) < 0; }
-
- template <class _CharT, class _Alloc>
- bool
- operator==(const rope<_CharT, _Alloc>& __left,
- const rope<_CharT, _Alloc>& __right)
- { return __left.compare(__right) == 0; }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator==(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y)
- { return (__x._M_pos == __y._M_pos && __x._M_root == __y._M_root); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator!=(const rope<_CharT, _Alloc>& __x,
- const rope<_CharT, _Alloc>& __y)
- { return !(__x == __y); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator>(const rope<_CharT, _Alloc>& __x,
- const rope<_CharT, _Alloc>& __y)
- { return __y < __x; }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator<=(const rope<_CharT, _Alloc>& __x,
- const rope<_CharT, _Alloc>& __y)
- { return !(__y < __x); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator>=(const rope<_CharT, _Alloc>& __x,
- const rope<_CharT, _Alloc>& __y)
- { return !(__x < __y); }
-
- template <class _CharT, class _Alloc>
- inline bool
- operator!=(const _Rope_char_ptr_proxy<_CharT, _Alloc>& __x,
- const _Rope_char_ptr_proxy<_CharT, _Alloc>& __y)
- { return !(__x == __y); }
-
- template<class _CharT, class _Traits, class _Alloc>
- std::basic_ostream<_CharT, _Traits>&
- operator<<(std::basic_ostream<_CharT, _Traits>& __o,
- const rope<_CharT, _Alloc>& __r);
-
- typedef rope<char> crope;
- typedef rope<wchar_t> wrope;
-
- inline crope::reference
- __mutable_reference_at(crope& __c, size_t __i)
- { return __c.mutable_reference_at(__i); }
-
- inline wrope::reference
- __mutable_reference_at(wrope& __c, size_t __i)
- { return __c.mutable_reference_at(__i); }
-
- template <class _CharT, class _Alloc>
- inline void
- swap(rope<_CharT, _Alloc>& __x, rope<_CharT, _Alloc>& __y)
- { __x.swap(__y); }
-
-_GLIBCXX_END_NAMESPACE
-
-
-namespace std
-{
-namespace tr1
-{
- template<>
- struct hash<__gnu_cxx::crope>
- {
- size_t
- operator()(const __gnu_cxx::crope& __str) const
- {
- size_t __size = __str.size();
- if (0 == __size)
- return 0;
- return 13 * __str[0] + 5 * __str[__size - 1] + __size;
- }
- };
-
-
- template<>
- struct hash<__gnu_cxx::wrope>
- {
- size_t
- operator()(const __gnu_cxx::wrope& __str) const
- {
- size_t __size = __str.size();
- if (0 == __size)
- return 0;
- return 13 * __str[0] + 5 * __str[__size - 1] + __size;
- }
- };
-} // namespace tr1
-} // namespace std
-
-# include <ext/ropeimpl.h>
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/ropeimpl.h b/gcc-4.4.3/libstdc++-v3/include/ext/ropeimpl.h
deleted file mode 100644
index e79bca40b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/ropeimpl.h
+++ /dev/null
@@ -1,1701 +0,0 @@
-// SGI's rope class implementation -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- */
-
-/** @file ropeimpl.h
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#include <cstdio>
-#include <ostream>
-#include <bits/functexcept.h>
-
-#include <ext/algorithm> // For copy_n and lexicographical_compare_3way
-#include <ext/memory> // For uninitialized_copy_n
-#include <ext/numeric> // For power
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::printf;
- using std::basic_ostream;
- using std::__throw_length_error;
- using std::_Destroy;
- using std::uninitialized_fill_n;
-
- // Set buf_start, buf_end, and buf_ptr appropriately, filling tmp_buf
- // if necessary. Assumes _M_path_end[leaf_index] and leaf_pos are correct.
- // Results in a valid buf_ptr if the iterator can be legitimately
- // dereferenced.
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator_base<_CharT, _Alloc>::
- _S_setbuf(_Rope_iterator_base<_CharT, _Alloc>& __x)
- {
- const _RopeRep* __leaf = __x._M_path_end[__x._M_leaf_index];
- size_t __leaf_pos = __x._M_leaf_pos;
- size_t __pos = __x._M_current_pos;
-
- switch(__leaf->_M_tag)
- {
- case __detail::_S_leaf:
- __x._M_buf_start = ((_Rope_RopeLeaf<_CharT, _Alloc>*)__leaf)->_M_data;
- __x._M_buf_ptr = __x._M_buf_start + (__pos - __leaf_pos);
- __x._M_buf_end = __x._M_buf_start + __leaf->_M_size;
- break;
- case __detail::_S_function:
- case __detail::_S_substringfn:
- {
- size_t __len = _S_iterator_buf_len;
- size_t __buf_start_pos = __leaf_pos;
- size_t __leaf_end = __leaf_pos + __leaf->_M_size;
- char_producer<_CharT>* __fn = ((_Rope_RopeFunction<_CharT,
- _Alloc>*)__leaf)->_M_fn;
- if (__buf_start_pos + __len <= __pos)
- {
- __buf_start_pos = __pos - __len / 4;
- if (__buf_start_pos + __len > __leaf_end)
- __buf_start_pos = __leaf_end - __len;
- }
- if (__buf_start_pos + __len > __leaf_end)
- __len = __leaf_end - __buf_start_pos;
- (*__fn)(__buf_start_pos - __leaf_pos, __len, __x._M_tmp_buf);
- __x._M_buf_ptr = __x._M_tmp_buf + (__pos - __buf_start_pos);
- __x._M_buf_start = __x._M_tmp_buf;
- __x._M_buf_end = __x._M_tmp_buf + __len;
- }
- break;
- default:
- break;
- }
- }
-
- // Set path and buffer inside a rope iterator. We assume that
- // pos and root are already set.
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator_base<_CharT, _Alloc>::
- _S_setcache(_Rope_iterator_base<_CharT, _Alloc>& __x)
- {
- const _RopeRep* __path[int(__detail::_S_max_rope_depth) + 1];
- const _RopeRep* __curr_rope;
- int __curr_depth = -1; /* index into path */
- size_t __curr_start_pos = 0;
- size_t __pos = __x._M_current_pos;
- unsigned char __dirns = 0; // Bit vector marking right turns in the path
-
- if (__pos >= __x._M_root->_M_size)
- {
- __x._M_buf_ptr = 0;
- return;
- }
- __curr_rope = __x._M_root;
- if (0 != __curr_rope->_M_c_string)
- {
- /* Treat the root as a leaf. */
- __x._M_buf_start = __curr_rope->_M_c_string;
- __x._M_buf_end = __curr_rope->_M_c_string + __curr_rope->_M_size;
- __x._M_buf_ptr = __curr_rope->_M_c_string + __pos;
- __x._M_path_end[0] = __curr_rope;
- __x._M_leaf_index = 0;
- __x._M_leaf_pos = 0;
- return;
- }
- for(;;)
- {
- ++__curr_depth;
- __path[__curr_depth] = __curr_rope;
- switch(__curr_rope->_M_tag)
- {
- case __detail::_S_leaf:
- case __detail::_S_function:
- case __detail::_S_substringfn:
- __x._M_leaf_pos = __curr_start_pos;
- goto done;
- case __detail::_S_concat:
- {
- _Rope_RopeConcatenation<_CharT, _Alloc>* __c =
- (_Rope_RopeConcatenation<_CharT, _Alloc>*)__curr_rope;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- __dirns <<= 1;
- if (__pos >= __curr_start_pos + __left_len)
- {
- __dirns |= 1;
- __curr_rope = __c->_M_right;
- __curr_start_pos += __left_len;
- }
- else
- __curr_rope = __left;
- }
- break;
- }
- }
- done:
- // Copy last section of path into _M_path_end.
- {
- int __i = -1;
- int __j = __curr_depth + 1 - int(_S_path_cache_len);
-
- if (__j < 0) __j = 0;
- while (__j <= __curr_depth)
- __x._M_path_end[++__i] = __path[__j++];
- __x._M_leaf_index = __i;
- }
- __x._M_path_directions = __dirns;
- _S_setbuf(__x);
- }
-
- // Specialized version of the above. Assumes that
- // the path cache is valid for the previous position.
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator_base<_CharT, _Alloc>::
- _S_setcache_for_incr(_Rope_iterator_base<_CharT, _Alloc>& __x)
- {
- int __current_index = __x._M_leaf_index;
- const _RopeRep* __current_node = __x._M_path_end[__current_index];
- size_t __len = __current_node->_M_size;
- size_t __node_start_pos = __x._M_leaf_pos;
- unsigned char __dirns = __x._M_path_directions;
- _Rope_RopeConcatenation<_CharT, _Alloc>* __c;
-
- if (__x._M_current_pos - __node_start_pos < __len)
- {
- /* More stuff in this leaf, we just didn't cache it. */
- _S_setbuf(__x);
- return;
- }
- // node_start_pos is starting position of last_node.
- while (--__current_index >= 0)
- {
- if (!(__dirns & 1) /* Path turned left */)
- break;
- __current_node = __x._M_path_end[__current_index];
- __c = (_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node;
- // Otherwise we were in the right child. Thus we should pop
- // the concatenation node.
- __node_start_pos -= __c->_M_left->_M_size;
- __dirns >>= 1;
- }
- if (__current_index < 0)
- {
- // We underflowed the cache. Punt.
- _S_setcache(__x);
- return;
- }
- __current_node = __x._M_path_end[__current_index];
- __c = (_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node;
- // current_node is a concatenation node. We are positioned on the first
- // character in its right child.
- // node_start_pos is starting position of current_node.
- __node_start_pos += __c->_M_left->_M_size;
- __current_node = __c->_M_right;
- __x._M_path_end[++__current_index] = __current_node;
- __dirns |= 1;
- while (__detail::_S_concat == __current_node->_M_tag)
- {
- ++__current_index;
- if (int(_S_path_cache_len) == __current_index)
- {
- int __i;
- for (__i = 0; __i < int(_S_path_cache_len) - 1; __i++)
- __x._M_path_end[__i] = __x._M_path_end[__i+1];
- --__current_index;
- }
- __current_node =
- ((_Rope_RopeConcatenation<_CharT, _Alloc>*)__current_node)->_M_left;
- __x._M_path_end[__current_index] = __current_node;
- __dirns <<= 1;
- // node_start_pos is unchanged.
- }
- __x._M_leaf_index = __current_index;
- __x._M_leaf_pos = __node_start_pos;
- __x._M_path_directions = __dirns;
- _S_setbuf(__x);
- }
-
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator_base<_CharT, _Alloc>::
- _M_incr(size_t __n)
- {
- _M_current_pos += __n;
- if (0 != _M_buf_ptr)
- {
- size_t __chars_left = _M_buf_end - _M_buf_ptr;
- if (__chars_left > __n)
- _M_buf_ptr += __n;
- else if (__chars_left == __n)
- {
- _M_buf_ptr += __n;
- _S_setcache_for_incr(*this);
- }
- else
- _M_buf_ptr = 0;
- }
- }
-
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator_base<_CharT, _Alloc>::
- _M_decr(size_t __n)
- {
- if (0 != _M_buf_ptr)
- {
- size_t __chars_left = _M_buf_ptr - _M_buf_start;
- if (__chars_left >= __n)
- _M_buf_ptr -= __n;
- else
- _M_buf_ptr = 0;
- }
- _M_current_pos -= __n;
- }
-
- template <class _CharT, class _Alloc>
- void
- _Rope_iterator<_CharT, _Alloc>::
- _M_check()
- {
- if (_M_root_rope->_M_tree_ptr != this->_M_root)
- {
- // _Rope was modified. Get things fixed up.
- _RopeRep::_S_unref(this->_M_root);
- this->_M_root = _M_root_rope->_M_tree_ptr;
- _RopeRep::_S_ref(this->_M_root);
- this->_M_buf_ptr = 0;
- }
- }
-
- template <class _CharT, class _Alloc>
- inline
- _Rope_const_iterator<_CharT, _Alloc>::
- _Rope_const_iterator(const _Rope_iterator<_CharT, _Alloc>& __x)
- : _Rope_iterator_base<_CharT, _Alloc>(__x)
- { }
-
- template <class _CharT, class _Alloc>
- inline
- _Rope_iterator<_CharT, _Alloc>::
- _Rope_iterator(rope<_CharT, _Alloc>& __r, size_t __pos)
- : _Rope_iterator_base<_CharT,_Alloc>(__r._M_tree_ptr, __pos),
- _M_root_rope(&__r)
- { _RopeRep::_S_ref(this->_M_root); }
-
- template <class _CharT, class _Alloc>
- inline size_t
- rope<_CharT, _Alloc>::
- _S_char_ptr_len(const _CharT* __s)
- {
- const _CharT* __p = __s;
-
- while (!_S_is0(*__p))
- ++__p;
- return (__p - __s);
- }
-
-
-#ifndef __GC
-
- template <class _CharT, class _Alloc>
- inline void
- _Rope_RopeRep<_CharT, _Alloc>::
- _M_free_c_string()
- {
- _CharT* __cstr = _M_c_string;
- if (0 != __cstr)
- {
- size_t __size = this->_M_size + 1;
- _Destroy(__cstr, __cstr + __size, _M_get_allocator());
- this->_Data_deallocate(__cstr, __size);
- }
- }
-
- template <class _CharT, class _Alloc>
- inline void
- _Rope_RopeRep<_CharT, _Alloc>::
- _S_free_string(_CharT* __s, size_t __n, allocator_type& __a)
- {
- if (!_S_is_basic_char_type((_CharT*)0))
- _Destroy(__s, __s + __n, __a);
-
- // This has to be a static member, so this gets a bit messy
- __a.deallocate(__s,
- _Rope_RopeLeaf<_CharT, _Alloc>::_S_rounded_up_size(__n));
- }
-
- // There are several reasons for not doing this with virtual destructors
- // and a class specific delete operator:
- // - A class specific delete operator can't easily get access to
- // allocator instances if we need them.
- // - Any virtual function would need a 4 or byte vtable pointer;
- // this only requires a one byte tag per object.
- template <class _CharT, class _Alloc>
- void
- _Rope_RopeRep<_CharT, _Alloc>::
- _M_free_tree()
- {
- switch(_M_tag)
- {
- case __detail::_S_leaf:
- {
- _Rope_RopeLeaf<_CharT, _Alloc>* __l
- = (_Rope_RopeLeaf<_CharT, _Alloc>*)this;
- __l->_Rope_RopeLeaf<_CharT, _Alloc>::~_Rope_RopeLeaf();
- _L_deallocate(__l, 1);
- break;
- }
- case __detail::_S_concat:
- {
- _Rope_RopeConcatenation<_CharT,_Alloc>* __c
- = (_Rope_RopeConcatenation<_CharT, _Alloc>*)this;
- __c->_Rope_RopeConcatenation<_CharT, _Alloc>::
- ~_Rope_RopeConcatenation();
- _C_deallocate(__c, 1);
- break;
- }
- case __detail::_S_function:
- {
- _Rope_RopeFunction<_CharT, _Alloc>* __f
- = (_Rope_RopeFunction<_CharT, _Alloc>*)this;
- __f->_Rope_RopeFunction<_CharT, _Alloc>::~_Rope_RopeFunction();
- _F_deallocate(__f, 1);
- break;
- }
- case __detail::_S_substringfn:
- {
- _Rope_RopeSubstring<_CharT, _Alloc>* __ss =
- (_Rope_RopeSubstring<_CharT, _Alloc>*)this;
- __ss->_Rope_RopeSubstring<_CharT, _Alloc>::
- ~_Rope_RopeSubstring();
- _S_deallocate(__ss, 1);
- break;
- }
- }
- }
-#else
-
- template <class _CharT, class _Alloc>
- inline void
- _Rope_RopeRep<_CharT, _Alloc>::
- _S_free_string(const _CharT*, size_t, allocator_type)
- { }
-
-#endif
-
- // Concatenate a C string onto a leaf rope by copying the rope data.
- // Used for short ropes.
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeLeaf*
- rope<_CharT, _Alloc>::
- _S_leaf_concat_char_iter(_RopeLeaf* __r, const _CharT* __iter, size_t __len)
- {
- size_t __old_len = __r->_M_size;
- _CharT* __new_data = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__old_len + __len));
- _RopeLeaf* __result;
-
- uninitialized_copy_n(__r->_M_data, __old_len, __new_data);
- uninitialized_copy_n(__iter, __len, __new_data + __old_len);
- _S_cond_store_eos(__new_data[__old_len + __len]);
- __try
- {
- __result = _S_new_RopeLeaf(__new_data, __old_len + __len,
- __r->_M_get_allocator());
- }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__new_data, __old_len + __len,
- __r->_M_get_allocator());
- __throw_exception_again;
- }
- return __result;
- }
-
-#ifndef __GC
- // As above, but it's OK to clobber original if refcount is 1
- template <class _CharT, class _Alloc>
- typename rope<_CharT,_Alloc>::_RopeLeaf*
- rope<_CharT, _Alloc>::
- _S_destr_leaf_concat_char_iter(_RopeLeaf* __r, const _CharT* __iter,
- size_t __len)
- {
- if (__r->_M_ref_count > 1)
- return _S_leaf_concat_char_iter(__r, __iter, __len);
- size_t __old_len = __r->_M_size;
- if (_S_allocated_capacity(__old_len) >= __old_len + __len)
- {
- // The space has been partially initialized for the standard
- // character types. But that doesn't matter for those types.
- uninitialized_copy_n(__iter, __len, __r->_M_data + __old_len);
- if (_S_is_basic_char_type((_CharT*)0))
- _S_cond_store_eos(__r->_M_data[__old_len + __len]);
- else if (__r->_M_c_string != __r->_M_data && 0 != __r->_M_c_string)
- {
- __r->_M_free_c_string();
- __r->_M_c_string = 0;
- }
- __r->_M_size = __old_len + __len;
- __r->_M_ref_count = 2;
- return __r;
- }
- else
- {
- _RopeLeaf* __result = _S_leaf_concat_char_iter(__r, __iter, __len);
- return __result;
- }
- }
-#endif
-
- // Assumes left and right are not 0.
- // Does not increment (nor decrement on exception) child reference counts.
- // Result has ref count 1.
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeRep*
- rope<_CharT, _Alloc>::
- _S_tree_concat(_RopeRep* __left, _RopeRep* __right)
- {
- _RopeConcatenation* __result = _S_new_RopeConcatenation(__left, __right,
- __left->
- _M_get_allocator());
- size_t __depth = __result->_M_depth;
-
- if (__depth > 20
- && (__result->_M_size < 1000
- || __depth > size_t(__detail::_S_max_rope_depth)))
- {
- _RopeRep* __balanced;
-
- __try
- {
- __balanced = _S_balance(__result);
- __result->_M_unref_nonnil();
- }
- __catch(...)
- {
- _C_deallocate(__result,1);
- __throw_exception_again;
- }
- // In case of exception, we need to deallocate
- // otherwise dangling result node. But caller
- // still owns its children. Thus unref is
- // inappropriate.
- return __balanced;
- }
- else
- return __result;
- }
-
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeRep*
- rope<_CharT, _Alloc>::
- _S_concat_char_iter(_RopeRep* __r, const _CharT*__s, size_t __slen)
- {
- _RopeRep* __result;
- if (0 == __slen)
- {
- _S_ref(__r);
- return __r;
- }
- if (0 == __r)
- return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
- __r->_M_get_allocator());
- if (__r->_M_tag == __detail::_S_leaf
- && __r->_M_size + __slen <= size_t(_S_copy_max))
- {
- __result = _S_leaf_concat_char_iter((_RopeLeaf*)__r, __s, __slen);
- return __result;
- }
- if (__detail::_S_concat == __r->_M_tag
- && __detail::_S_leaf == ((_RopeConcatenation*) __r)->_M_right->_M_tag)
- {
- _RopeLeaf* __right =
- (_RopeLeaf* )(((_RopeConcatenation* )__r)->_M_right);
- if (__right->_M_size + __slen <= size_t(_S_copy_max))
- {
- _RopeRep* __left = ((_RopeConcatenation*)__r)->_M_left;
- _RopeRep* __nright =
- _S_leaf_concat_char_iter((_RopeLeaf*)__right, __s, __slen);
- __left->_M_ref_nonnil();
- __try
- { __result = _S_tree_concat(__left, __nright); }
- __catch(...)
- {
- _S_unref(__left);
- _S_unref(__nright);
- __throw_exception_again;
- }
- return __result;
- }
- }
- _RopeRep* __nright =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->_M_get_allocator());
- __try
- {
- __r->_M_ref_nonnil();
- __result = _S_tree_concat(__r, __nright);
- }
- __catch(...)
- {
- _S_unref(__r);
- _S_unref(__nright);
- __throw_exception_again;
- }
- return __result;
- }
-
-#ifndef __GC
- template <class _CharT, class _Alloc>
- typename rope<_CharT,_Alloc>::_RopeRep*
- rope<_CharT,_Alloc>::
- _S_destr_concat_char_iter(_RopeRep* __r, const _CharT* __s, size_t __slen)
- {
- _RopeRep* __result;
- if (0 == __r)
- return __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen,
- __r->_M_get_allocator());
- size_t __count = __r->_M_ref_count;
- size_t __orig_size = __r->_M_size;
- if (__count > 1)
- return _S_concat_char_iter(__r, __s, __slen);
- if (0 == __slen)
- {
- __r->_M_ref_count = 2; // One more than before
- return __r;
- }
- if (__orig_size + __slen <= size_t(_S_copy_max)
- && __detail::_S_leaf == __r->_M_tag)
- {
- __result = _S_destr_leaf_concat_char_iter((_RopeLeaf*)__r, __s,
- __slen);
- return __result;
- }
- if (__detail::_S_concat == __r->_M_tag)
- {
- _RopeLeaf* __right = (_RopeLeaf*)(((_RopeConcatenation*)
- __r)->_M_right);
- if (__detail::_S_leaf == __right->_M_tag
- && __right->_M_size + __slen <= size_t(_S_copy_max))
- {
- _RopeRep* __new_right =
- _S_destr_leaf_concat_char_iter(__right, __s, __slen);
- if (__right == __new_right)
- __new_right->_M_ref_count = 1;
- else
- __right->_M_unref_nonnil();
- __r->_M_ref_count = 2; // One more than before.
- ((_RopeConcatenation*)__r)->_M_right = __new_right;
- __r->_M_size = __orig_size + __slen;
- if (0 != __r->_M_c_string)
- {
- __r->_M_free_c_string();
- __r->_M_c_string = 0;
- }
- return __r;
- }
- }
- _RopeRep* __right =
- __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__s, __slen, __r->_M_get_allocator());
- __r->_M_ref_nonnil();
- __try
- { __result = _S_tree_concat(__r, __right); }
- __catch(...)
- {
- _S_unref(__r);
- _S_unref(__right);
- __throw_exception_again;
- }
- return __result;
- }
-#endif /* !__GC */
-
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeRep*
- rope<_CharT, _Alloc>::
- _S_concat(_RopeRep* __left, _RopeRep* __right)
- {
- if (0 == __left)
- {
- _S_ref(__right);
- return __right;
- }
- if (0 == __right)
- {
- __left->_M_ref_nonnil();
- return __left;
- }
- if (__detail::_S_leaf == __right->_M_tag)
- {
- if (__detail::_S_leaf == __left->_M_tag)
- {
- if (__right->_M_size + __left->_M_size <= size_t(_S_copy_max))
- return _S_leaf_concat_char_iter((_RopeLeaf*)__left,
- ((_RopeLeaf*)__right)->_M_data,
- __right->_M_size);
- }
- else if (__detail::_S_concat == __left->_M_tag
- && __detail::_S_leaf == ((_RopeConcatenation*)
- __left)->_M_right->_M_tag)
- {
- _RopeLeaf* __leftright =
- (_RopeLeaf*)(((_RopeConcatenation*)__left)->_M_right);
- if (__leftright->_M_size
- + __right->_M_size <= size_t(_S_copy_max))
- {
- _RopeRep* __leftleft = ((_RopeConcatenation*)__left)->_M_left;
- _RopeRep* __rest = _S_leaf_concat_char_iter(__leftright,
- ((_RopeLeaf*)
- __right)->
- _M_data,
- __right->_M_size);
- __leftleft->_M_ref_nonnil();
- __try
- { return(_S_tree_concat(__leftleft, __rest)); }
- __catch(...)
- {
- _S_unref(__leftleft);
- _S_unref(__rest);
- __throw_exception_again;
- }
- }
- }
- }
- __left->_M_ref_nonnil();
- __right->_M_ref_nonnil();
- __try
- { return(_S_tree_concat(__left, __right)); }
- __catch(...)
- {
- _S_unref(__left);
- _S_unref(__right);
- __throw_exception_again;
- }
- }
-
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeRep*
- rope<_CharT, _Alloc>::
- _S_substring(_RopeRep* __base, size_t __start, size_t __endp1)
- {
- if (0 == __base)
- return 0;
- size_t __len = __base->_M_size;
- size_t __adj_endp1;
- const size_t __lazy_threshold = 128;
-
- if (__endp1 >= __len)
- {
- if (0 == __start)
- {
- __base->_M_ref_nonnil();
- return __base;
- }
- else
- __adj_endp1 = __len;
-
- }
- else
- __adj_endp1 = __endp1;
-
- switch(__base->_M_tag)
- {
- case __detail::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__base;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
- size_t __left_len = __left->_M_size;
- _RopeRep* __result;
-
- if (__adj_endp1 <= __left_len)
- return _S_substring(__left, __start, __endp1);
- else if (__start >= __left_len)
- return _S_substring(__right, __start - __left_len,
- __adj_endp1 - __left_len);
- _Self_destruct_ptr __left_result(_S_substring(__left,
- __start,
- __left_len));
- _Self_destruct_ptr __right_result(_S_substring(__right, 0,
- __endp1
- - __left_len));
- __result = _S_concat(__left_result, __right_result);
- return __result;
- }
- case __detail::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__base;
- _RopeLeaf* __result;
- size_t __result_len;
- if (__start >= __adj_endp1)
- return 0;
- __result_len = __adj_endp1 - __start;
- if (__result_len > __lazy_threshold)
- goto lazy;
-#ifdef __GC
- const _CharT* __section = __l->_M_data + __start;
- __result = _S_new_RopeLeaf(__section, __result_len,
- __base->_M_get_allocator());
- __result->_M_c_string = 0; // Not eos terminated.
-#else
- // We should sometimes create substring node instead.
- __result = __STL_ROPE_FROM_UNOWNED_CHAR_PTR(__l->_M_data + __start,
- __result_len,
- __base->
- _M_get_allocator());
-#endif
- return __result;
- }
- case __detail::_S_substringfn:
- // Avoid introducing multiple layers of substring nodes.
- {
- _RopeSubstring* __old = (_RopeSubstring*)__base;
- size_t __result_len;
- if (__start >= __adj_endp1)
- return 0;
- __result_len = __adj_endp1 - __start;
- if (__result_len > __lazy_threshold)
- {
- _RopeSubstring* __result =
- _S_new_RopeSubstring(__old->_M_base,
- __start + __old->_M_start,
- __adj_endp1 - __start,
- __base->_M_get_allocator());
- return __result;
-
- } // *** else fall through: ***
- }
- case __detail::_S_function:
- {
- _RopeFunction* __f = (_RopeFunction*)__base;
- _CharT* __section;
- size_t __result_len;
- if (__start >= __adj_endp1)
- return 0;
- __result_len = __adj_endp1 - __start;
-
- if (__result_len > __lazy_threshold)
- goto lazy;
- __section = (_CharT*)
- _Data_allocate(_S_rounded_up_size(__result_len));
- __try
- { (*(__f->_M_fn))(__start, __result_len, __section); }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__section, __result_len,
- __base->_M_get_allocator());
- __throw_exception_again;
- }
- _S_cond_store_eos(__section[__result_len]);
- return _S_new_RopeLeaf(__section, __result_len,
- __base->_M_get_allocator());
- }
- }
- lazy:
- {
- // Create substring node.
- return _S_new_RopeSubstring(__base, __start, __adj_endp1 - __start,
- __base->_M_get_allocator());
- }
- }
-
- template<class _CharT>
- class _Rope_flatten_char_consumer
- : public _Rope_char_consumer<_CharT>
- {
- private:
- _CharT* _M_buf_ptr;
- public:
-
- _Rope_flatten_char_consumer(_CharT* __buffer)
- { _M_buf_ptr = __buffer; };
-
- ~_Rope_flatten_char_consumer() {}
-
- bool
- operator()(const _CharT* __leaf, size_t __n)
- {
- uninitialized_copy_n(__leaf, __n, _M_buf_ptr);
- _M_buf_ptr += __n;
- return true;
- }
- };
-
- template<class _CharT>
- class _Rope_find_char_char_consumer
- : public _Rope_char_consumer<_CharT>
- {
- private:
- _CharT _M_pattern;
- public:
- size_t _M_count; // Number of nonmatching characters
-
- _Rope_find_char_char_consumer(_CharT __p)
- : _M_pattern(__p), _M_count(0) {}
-
- ~_Rope_find_char_char_consumer() {}
-
- bool
- operator()(const _CharT* __leaf, size_t __n)
- {
- size_t __i;
- for (__i = 0; __i < __n; __i++)
- {
- if (__leaf[__i] == _M_pattern)
- {
- _M_count += __i;
- return false;
- }
- }
- _M_count += __n; return true;
- }
- };
-
- template<class _CharT, class _Traits>
- // Here _CharT is both the stream and rope character type.
- class _Rope_insert_char_consumer
- : public _Rope_char_consumer<_CharT>
- {
- private:
- typedef basic_ostream<_CharT,_Traits> _Insert_ostream;
- _Insert_ostream& _M_o;
- public:
- _Rope_insert_char_consumer(_Insert_ostream& __writer)
- : _M_o(__writer) {};
- ~_Rope_insert_char_consumer() { };
- // Caller is presumed to own the ostream
- bool operator() (const _CharT* __leaf, size_t __n);
- // Returns true to continue traversal.
- };
-
- template<class _CharT, class _Traits>
- bool
- _Rope_insert_char_consumer<_CharT, _Traits>::
- operator()(const _CharT* __leaf, size_t __n)
- {
- size_t __i;
- // We assume that formatting is set up correctly for each element.
- for (__i = 0; __i < __n; __i++)
- _M_o.put(__leaf[__i]);
- return true;
- }
-
- template <class _CharT, class _Alloc>
- bool
- rope<_CharT, _Alloc>::
- _S_apply_to_pieces(_Rope_char_consumer<_CharT>& __c,
- const _RopeRep* __r, size_t __begin, size_t __end)
- {
- if (0 == __r)
- return true;
- switch(__r->_M_tag)
- {
- case __detail::_S_concat:
- {
- _RopeConcatenation* __conc = (_RopeConcatenation*)__r;
- _RopeRep* __left = __conc->_M_left;
- size_t __left_len = __left->_M_size;
- if (__begin < __left_len)
- {
- size_t __left_end = std::min(__left_len, __end);
- if (!_S_apply_to_pieces(__c, __left, __begin, __left_end))
- return false;
- }
- if (__end > __left_len)
- {
- _RopeRep* __right = __conc->_M_right;
- size_t __right_start = std::max(__left_len, __begin);
- if (!_S_apply_to_pieces(__c, __right,
- __right_start - __left_len,
- __end - __left_len))
- return false;
- }
- }
- return true;
- case __detail::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return __c(__l->_M_data + __begin, __end - __begin);
- }
- case __detail::_S_function:
- case __detail::_S_substringfn:
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- size_t __len = __end - __begin;
- bool __result;
- _CharT* __buffer =
- (_CharT*)_Alloc().allocate(__len * sizeof(_CharT));
- __try
- {
- (*(__f->_M_fn))(__begin, __len, __buffer);
- __result = __c(__buffer, __len);
- _Alloc().deallocate(__buffer, __len * sizeof(_CharT));
- }
- __catch(...)
- {
- _Alloc().deallocate(__buffer, __len * sizeof(_CharT));
- __throw_exception_again;
- }
- return __result;
- }
- default:
- return false;
- }
- }
-
- template<class _CharT, class _Traits>
- inline void
- _Rope_fill(basic_ostream<_CharT, _Traits>& __o, size_t __n)
- {
- char __f = __o.fill();
- size_t __i;
-
- for (__i = 0; __i < __n; __i++)
- __o.put(__f);
- }
-
-
- template <class _CharT>
- inline bool
- _Rope_is_simple(_CharT*)
- { return false; }
-
- inline bool
- _Rope_is_simple(char*)
- { return true; }
-
- inline bool
- _Rope_is_simple(wchar_t*)
- { return true; }
-
- template<class _CharT, class _Traits, class _Alloc>
- basic_ostream<_CharT, _Traits>&
- operator<<(basic_ostream<_CharT, _Traits>& __o,
- const rope<_CharT, _Alloc>& __r)
- {
- size_t __w = __o.width();
- bool __left = bool(__o.flags() & std::ios::left);
- size_t __pad_len;
- size_t __rope_len = __r.size();
- _Rope_insert_char_consumer<_CharT, _Traits> __c(__o);
- bool __is_simple = _Rope_is_simple((_CharT*)0);
-
- if (__rope_len < __w)
- __pad_len = __w - __rope_len;
- else
- __pad_len = 0;
-
- if (!__is_simple)
- __o.width(__w / __rope_len);
- __try
- {
- if (__is_simple && !__left && __pad_len > 0)
- _Rope_fill(__o, __pad_len);
- __r.apply_to_pieces(0, __r.size(), __c);
- if (__is_simple && __left && __pad_len > 0)
- _Rope_fill(__o, __pad_len);
- if (!__is_simple)
- __o.width(__w);
- }
- __catch(...)
- {
- if (!__is_simple)
- __o.width(__w);
- __throw_exception_again;
- }
- return __o;
- }
-
- template <class _CharT, class _Alloc>
- _CharT*
- rope<_CharT, _Alloc>::
- _S_flatten(_RopeRep* __r, size_t __start, size_t __len,
- _CharT* __buffer)
- {
- _Rope_flatten_char_consumer<_CharT> __c(__buffer);
- _S_apply_to_pieces(__c, __r, __start, __start + __len);
- return(__buffer + __len);
- }
-
- template <class _CharT, class _Alloc>
- size_t
- rope<_CharT, _Alloc>::
- find(_CharT __pattern, size_t __start) const
- {
- _Rope_find_char_char_consumer<_CharT> __c(__pattern);
- _S_apply_to_pieces(__c, this->_M_tree_ptr, __start, size());
- size_type __result_pos = __start + __c._M_count;
-#ifndef __STL_OLD_ROPE_SEMANTICS
- if (__result_pos == size())
- __result_pos = npos;
-#endif
- return __result_pos;
- }
-
- template <class _CharT, class _Alloc>
- _CharT*
- rope<_CharT, _Alloc>::
- _S_flatten(_RopeRep* __r, _CharT* __buffer)
- {
- if (0 == __r)
- return __buffer;
- switch(__r->_M_tag)
- {
- case __detail::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
- _CharT* __rest = _S_flatten(__left, __buffer);
- return _S_flatten(__right, __rest);
- }
- case __detail::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return copy_n(__l->_M_data, __l->_M_size, __buffer).second;
- }
- case __detail::_S_function:
- case __detail::_S_substringfn:
- // We don't yet do anything with substring nodes.
- // This needs to be fixed before ropefiles will work well.
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- (*(__f->_M_fn))(0, __f->_M_size, __buffer);
- return __buffer + __f->_M_size;
- }
- default:
- return 0;
- }
- }
-
- // This needs work for _CharT != char
- template <class _CharT, class _Alloc>
- void
- rope<_CharT, _Alloc>::
- _S_dump(_RopeRep* __r, int __indent)
- {
- for (int __i = 0; __i < __indent; __i++)
- putchar(' ');
- if (0 == __r)
- {
- printf("NULL\n");
- return;
- }
- if (_S_concat == __r->_M_tag)
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- _RopeRep* __right = __c->_M_right;
-
-#ifdef __GC
- printf("Concatenation %p (depth = %d, len = %ld, %s balanced)\n",
- __r, __r->_M_depth, __r->_M_size,
- __r->_M_is_balanced? "" : "not");
-#else
- printf("Concatenation %p (rc = %ld, depth = %d, "
- "len = %ld, %s balanced)\n",
- __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size,
- __r->_M_is_balanced? "" : "not");
-#endif
- _S_dump(__left, __indent + 2);
- _S_dump(__right, __indent + 2);
- return;
- }
- else
- {
- char* __kind;
-
- switch (__r->_M_tag)
- {
- case __detail::_S_leaf:
- __kind = "Leaf";
- break;
- case __detail::_S_function:
- __kind = "Function";
- break;
- case __detail::_S_substringfn:
- __kind = "Function representing substring";
- break;
- default:
- __kind = "(corrupted kind field!)";
- }
-#ifdef __GC
- printf("%s %p (depth = %d, len = %ld) ",
- __kind, __r, __r->_M_depth, __r->_M_size);
-#else
- printf("%s %p (rc = %ld, depth = %d, len = %ld) ",
- __kind, __r, __r->_M_ref_count, __r->_M_depth, __r->_M_size);
-#endif
- if (_S_is_one_byte_char_type((_CharT*)0))
- {
- const int __max_len = 40;
- _Self_destruct_ptr __prefix(_S_substring(__r, 0, __max_len));
- _CharT __buffer[__max_len + 1];
- bool __too_big = __r->_M_size > __prefix->_M_size;
-
- _S_flatten(__prefix, __buffer);
- __buffer[__prefix->_M_size] = _S_eos((_CharT*)0);
- printf("%s%s\n", (char*)__buffer,
- __too_big? "...\n" : "\n");
- }
- else
- printf("\n");
- }
- }
-
- template <class _CharT, class _Alloc>
- const unsigned long
- rope<_CharT, _Alloc>::
- _S_min_len[int(__detail::_S_max_rope_depth) + 1] = {
- /* 0 */1, /* 1 */2, /* 2 */3, /* 3 */5, /* 4 */8, /* 5 */13, /* 6 */21,
- /* 7 */34, /* 8 */55, /* 9 */89, /* 10 */144, /* 11 */233, /* 12 */377,
- /* 13 */610, /* 14 */987, /* 15 */1597, /* 16 */2584, /* 17 */4181,
- /* 18 */6765, /* 19 */10946, /* 20 */17711, /* 21 */28657, /* 22 */46368,
- /* 23 */75025, /* 24 */121393, /* 25 */196418, /* 26 */317811,
- /* 27 */514229, /* 28 */832040, /* 29 */1346269, /* 30 */2178309,
- /* 31 */3524578, /* 32 */5702887, /* 33 */9227465, /* 34 */14930352,
- /* 35 */24157817, /* 36 */39088169, /* 37 */63245986, /* 38 */102334155,
- /* 39 */165580141, /* 40 */267914296, /* 41 */433494437,
- /* 42 */701408733, /* 43 */1134903170, /* 44 */1836311903,
- /* 45 */2971215073u };
- // These are Fibonacci numbers < 2**32.
-
- template <class _CharT, class _Alloc>
- typename rope<_CharT, _Alloc>::_RopeRep*
- rope<_CharT, _Alloc>::
- _S_balance(_RopeRep* __r)
- {
- _RopeRep* __forest[int(__detail::_S_max_rope_depth) + 1];
- _RopeRep* __result = 0;
- int __i;
- // Invariant:
- // The concatenation of forest in descending order is equal to __r.
- // __forest[__i]._M_size >= _S_min_len[__i]
- // __forest[__i]._M_depth = __i
- // References from forest are included in refcount.
-
- for (__i = 0; __i <= int(__detail::_S_max_rope_depth); ++__i)
- __forest[__i] = 0;
- __try
- {
- _S_add_to_forest(__r, __forest);
- for (__i = 0; __i <= int(__detail::_S_max_rope_depth); ++__i)
- if (0 != __forest[__i])
- {
-#ifndef __GC
- _Self_destruct_ptr __old(__result);
-#endif
- __result = _S_concat(__forest[__i], __result);
- __forest[__i]->_M_unref_nonnil();
-#if !defined(__GC) && defined(__EXCEPTIONS)
- __forest[__i] = 0;
-#endif
- }
- }
- __catch(...)
- {
- for(__i = 0; __i <= int(__detail::_S_max_rope_depth); __i++)
- _S_unref(__forest[__i]);
- __throw_exception_again;
- }
-
- if (__result->_M_depth > int(__detail::_S_max_rope_depth))
- __throw_length_error(__N("rope::_S_balance"));
- return(__result);
- }
-
- template <class _CharT, class _Alloc>
- void
- rope<_CharT, _Alloc>::
- _S_add_to_forest(_RopeRep* __r, _RopeRep** __forest)
- {
- if (__r->_M_is_balanced)
- {
- _S_add_leaf_to_forest(__r, __forest);
- return;
- }
-
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
-
- _S_add_to_forest(__c->_M_left, __forest);
- _S_add_to_forest(__c->_M_right, __forest);
- }
- }
-
-
- template <class _CharT, class _Alloc>
- void
- rope<_CharT, _Alloc>::
- _S_add_leaf_to_forest(_RopeRep* __r, _RopeRep** __forest)
- {
- _RopeRep* __insertee; // included in refcount
- _RopeRep* __too_tiny = 0; // included in refcount
- int __i; // forest[0..__i-1] is empty
- size_t __s = __r->_M_size;
-
- for (__i = 0; __s >= _S_min_len[__i+1]/* not this bucket */; ++__i)
- {
- if (0 != __forest[__i])
- {
-#ifndef __GC
- _Self_destruct_ptr __old(__too_tiny);
-#endif
- __too_tiny = _S_concat_and_set_balanced(__forest[__i],
- __too_tiny);
- __forest[__i]->_M_unref_nonnil();
- __forest[__i] = 0;
- }
- }
- {
-#ifndef __GC
- _Self_destruct_ptr __old(__too_tiny);
-#endif
- __insertee = _S_concat_and_set_balanced(__too_tiny, __r);
- }
- // Too_tiny dead, and no longer included in refcount.
- // Insertee is live and included.
- for (;; ++__i)
- {
- if (0 != __forest[__i])
- {
-#ifndef __GC
- _Self_destruct_ptr __old(__insertee);
-#endif
- __insertee = _S_concat_and_set_balanced(__forest[__i],
- __insertee);
- __forest[__i]->_M_unref_nonnil();
- __forest[__i] = 0;
- }
- if (__i == int(__detail::_S_max_rope_depth)
- || __insertee->_M_size < _S_min_len[__i+1])
- {
- __forest[__i] = __insertee;
- // refcount is OK since __insertee is now dead.
- return;
- }
- }
- }
-
- template <class _CharT, class _Alloc>
- _CharT
- rope<_CharT, _Alloc>::
- _S_fetch(_RopeRep* __r, size_type __i)
- {
- __GC_CONST _CharT* __cstr = __r->_M_c_string;
-
- if (0 != __cstr)
- return __cstr[__i];
- for(;;)
- {
- switch(__r->_M_tag)
- {
- case __detail::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- if (__i >= __left_len)
- {
- __i -= __left_len;
- __r = __c->_M_right;
- }
- else
- __r = __left;
- }
- break;
- case __detail::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- return __l->_M_data[__i];
- }
- case __detail::_S_function:
- case __detail::_S_substringfn:
- {
- _RopeFunction* __f = (_RopeFunction*)__r;
- _CharT __result;
-
- (*(__f->_M_fn))(__i, 1, &__result);
- return __result;
- }
- }
- }
- }
-
-#ifndef __GC
- // Return a uniquely referenced character slot for the given
- // position, or 0 if that's not possible.
- template <class _CharT, class _Alloc>
- _CharT*
- rope<_CharT, _Alloc>::
- _S_fetch_ptr(_RopeRep* __r, size_type __i)
- {
- _RopeRep* __clrstack[__detail::_S_max_rope_depth];
- size_t __csptr = 0;
-
- for(;;)
- {
- if (__r->_M_ref_count > 1)
- return 0;
- switch(__r->_M_tag)
- {
- case __detail::_S_concat:
- {
- _RopeConcatenation* __c = (_RopeConcatenation*)__r;
- _RopeRep* __left = __c->_M_left;
- size_t __left_len = __left->_M_size;
-
- if (__c->_M_c_string != 0)
- __clrstack[__csptr++] = __c;
- if (__i >= __left_len)
- {
- __i -= __left_len;
- __r = __c->_M_right;
- }
- else
- __r = __left;
- }
- break;
- case __detail::_S_leaf:
- {
- _RopeLeaf* __l = (_RopeLeaf*)__r;
- if (__l->_M_c_string != __l->_M_data && __l->_M_c_string != 0)
- __clrstack[__csptr++] = __l;
- while (__csptr > 0)
- {
- -- __csptr;
- _RopeRep* __d = __clrstack[__csptr];
- __d->_M_free_c_string();
- __d->_M_c_string = 0;
- }
- return __l->_M_data + __i;
- }
- case __detail::_S_function:
- case __detail::_S_substringfn:
- return 0;
- }
- }
- }
-#endif /* __GC */
-
- // The following could be implemented trivially using
- // lexicographical_compare_3way.
- // We do a little more work to avoid dealing with rope iterators for
- // flat strings.
- template <class _CharT, class _Alloc>
- int
- rope<_CharT, _Alloc>::
- _S_compare (const _RopeRep* __left, const _RopeRep* __right)
- {
- size_t __left_len;
- size_t __right_len;
-
- if (0 == __right)
- return 0 != __left;
- if (0 == __left)
- return -1;
- __left_len = __left->_M_size;
- __right_len = __right->_M_size;
- if (__detail::_S_leaf == __left->_M_tag)
- {
- _RopeLeaf* __l = (_RopeLeaf*) __left;
- if (__detail::_S_leaf == __right->_M_tag)
- {
- _RopeLeaf* __r = (_RopeLeaf*) __right;
- return lexicographical_compare_3way(__l->_M_data,
- __l->_M_data + __left_len,
- __r->_M_data, __r->_M_data
- + __right_len);
- }
- else
- {
- const_iterator __rstart(__right, 0);
- const_iterator __rend(__right, __right_len);
- return lexicographical_compare_3way(__l->_M_data, __l->_M_data
- + __left_len,
- __rstart, __rend);
- }
- }
- else
- {
- const_iterator __lstart(__left, 0);
- const_iterator __lend(__left, __left_len);
- if (__detail::_S_leaf == __right->_M_tag)
- {
- _RopeLeaf* __r = (_RopeLeaf*) __right;
- return lexicographical_compare_3way(__lstart, __lend,
- __r->_M_data, __r->_M_data
- + __right_len);
- }
- else
- {
- const_iterator __rstart(__right, 0);
- const_iterator __rend(__right, __right_len);
- return lexicographical_compare_3way(__lstart, __lend,
- __rstart, __rend);
- }
- }
- }
-
- // Assignment to reference proxies.
- template <class _CharT, class _Alloc>
- _Rope_char_ref_proxy<_CharT, _Alloc>&
- _Rope_char_ref_proxy<_CharT, _Alloc>::
- operator=(_CharT __c)
- {
- _RopeRep* __old = _M_root->_M_tree_ptr;
-#ifndef __GC
- // First check for the case in which everything is uniquely
- // referenced. In that case we can do this destructively.
- _CharT* __ptr = _My_rope::_S_fetch_ptr(__old, _M_pos);
- if (0 != __ptr)
- {
- *__ptr = __c;
- return *this;
- }
-#endif
- _Self_destruct_ptr __left(_My_rope::_S_substring(__old, 0, _M_pos));
- _Self_destruct_ptr __right(_My_rope::_S_substring(__old, _M_pos + 1,
- __old->_M_size));
- _Self_destruct_ptr __result_left(_My_rope::
- _S_destr_concat_char_iter(__left,
- &__c, 1));
-
- _RopeRep* __result = _My_rope::_S_concat(__result_left, __right);
-#ifndef __GC
- _RopeRep::_S_unref(__old);
-#endif
- _M_root->_M_tree_ptr = __result;
- return *this;
- }
-
- template <class _CharT, class _Alloc>
- inline _Rope_char_ref_proxy<_CharT, _Alloc>::
- operator _CharT() const
- {
- if (_M_current_valid)
- return _M_current;
- else
- return _My_rope::_S_fetch(_M_root->_M_tree_ptr, _M_pos);
- }
-
- template <class _CharT, class _Alloc>
- _Rope_char_ptr_proxy<_CharT, _Alloc>
- _Rope_char_ref_proxy<_CharT, _Alloc>::
- operator&() const
- { return _Rope_char_ptr_proxy<_CharT, _Alloc>(*this); }
-
- template <class _CharT, class _Alloc>
- rope<_CharT, _Alloc>::
- rope(size_t __n, _CharT __c, const allocator_type& __a)
- : _Base(__a)
- {
- rope<_CharT,_Alloc> __result;
- const size_t __exponentiate_threshold = 32;
- size_t __exponent;
- size_t __rest;
- _CharT* __rest_buffer;
- _RopeRep* __remainder;
- rope<_CharT, _Alloc> __remainder_rope;
-
- if (0 == __n)
- return;
-
- __exponent = __n / __exponentiate_threshold;
- __rest = __n % __exponentiate_threshold;
- if (0 == __rest)
- __remainder = 0;
- else
- {
- __rest_buffer = this->_Data_allocate(_S_rounded_up_size(__rest));
- __uninitialized_fill_n_a(__rest_buffer, __rest, __c,
- _M_get_allocator());
- _S_cond_store_eos(__rest_buffer[__rest]);
- __try
- { __remainder = _S_new_RopeLeaf(__rest_buffer, __rest,
- _M_get_allocator()); }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__rest_buffer, __rest,
- _M_get_allocator());
- __throw_exception_again;
- }
- }
- __remainder_rope._M_tree_ptr = __remainder;
- if (__exponent != 0)
- {
- _CharT* __base_buffer =
- this->_Data_allocate(_S_rounded_up_size(__exponentiate_threshold));
- _RopeLeaf* __base_leaf;
- rope __base_rope;
- __uninitialized_fill_n_a(__base_buffer, __exponentiate_threshold, __c,
- _M_get_allocator());
- _S_cond_store_eos(__base_buffer[__exponentiate_threshold]);
- __try
- {
- __base_leaf = _S_new_RopeLeaf(__base_buffer,
- __exponentiate_threshold,
- _M_get_allocator());
- }
- __catch(...)
- {
- _RopeRep::__STL_FREE_STRING(__base_buffer,
- __exponentiate_threshold,
- _M_get_allocator());
- __throw_exception_again;
- }
- __base_rope._M_tree_ptr = __base_leaf;
- if (1 == __exponent)
- __result = __base_rope;
- else
- __result = power(__base_rope, __exponent,
- _Rope_Concat_fn<_CharT, _Alloc>());
-
- if (0 != __remainder)
- __result += __remainder_rope;
- }
- else
- __result = __remainder_rope;
-
- this->_M_tree_ptr = __result._M_tree_ptr;
- this->_M_tree_ptr->_M_ref_nonnil();
- }
-
- template<class _CharT, class _Alloc>
- _CharT
- rope<_CharT, _Alloc>::_S_empty_c_str[1];
-
- template<class _CharT, class _Alloc>
- const _CharT*
- rope<_CharT, _Alloc>::
- c_str() const
- {
- if (0 == this->_M_tree_ptr)
- {
- _S_empty_c_str[0] = _S_eos((_CharT*)0); // Possibly redundant,
- // but probably fast.
- return _S_empty_c_str;
- }
- __gthread_mutex_lock (&this->_M_tree_ptr->_M_c_string_lock);
- __GC_CONST _CharT* __result = this->_M_tree_ptr->_M_c_string;
- if (0 == __result)
- {
- size_t __s = size();
- __result = this->_Data_allocate(__s + 1);
- _S_flatten(this->_M_tree_ptr, __result);
- __result[__s] = _S_eos((_CharT*)0);
- this->_M_tree_ptr->_M_c_string = __result;
- }
- __gthread_mutex_unlock (&this->_M_tree_ptr->_M_c_string_lock);
- return(__result);
- }
-
- template<class _CharT, class _Alloc>
- const _CharT* rope<_CharT, _Alloc>::
- replace_with_c_str()
- {
- if (0 == this->_M_tree_ptr)
- {
- _S_empty_c_str[0] = _S_eos((_CharT*)0);
- return _S_empty_c_str;
- }
- __GC_CONST _CharT* __old_c_string = this->_M_tree_ptr->_M_c_string;
- if (__detail::_S_leaf == this->_M_tree_ptr->_M_tag
- && 0 != __old_c_string)
- return(__old_c_string);
- size_t __s = size();
- _CharT* __result = this->_Data_allocate(_S_rounded_up_size(__s));
- _S_flatten(this->_M_tree_ptr, __result);
- __result[__s] = _S_eos((_CharT*)0);
- this->_M_tree_ptr->_M_unref_nonnil();
- this->_M_tree_ptr = _S_new_RopeLeaf(__result, __s,
- this->_M_get_allocator());
- return(__result);
- }
-
- // Algorithm specializations. More should be added.
-
- template<class _Rope_iterator> // was templated on CharT and Alloc
- void // VC++ workaround
- _Rope_rotate(_Rope_iterator __first,
- _Rope_iterator __middle,
- _Rope_iterator __last)
- {
- typedef typename _Rope_iterator::value_type _CharT;
- typedef typename _Rope_iterator::_allocator_type _Alloc;
-
- rope<_CharT, _Alloc>& __r(__first.container());
- rope<_CharT, _Alloc> __prefix = __r.substr(0, __first.index());
- rope<_CharT, _Alloc> __suffix =
- __r.substr(__last.index(), __r.size() - __last.index());
- rope<_CharT, _Alloc> __part1 =
- __r.substr(__middle.index(), __last.index() - __middle.index());
- rope<_CharT, _Alloc> __part2 =
- __r.substr(__first.index(), __middle.index() - __first.index());
- __r = __prefix;
- __r += __part1;
- __r += __part2;
- __r += __suffix;
- }
-
-#if !defined(__GNUC__)
- // Appears to confuse g++
- inline void
- rotate(_Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __first,
- _Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __middle,
- _Rope_iterator<char, __STL_DEFAULT_ALLOCATOR(char)> __last)
- { _Rope_rotate(__first, __middle, __last); }
-#endif
-
-# if 0
- // Probably not useful for several reasons:
- // - for SGIs 7.1 compiler and probably some others,
- // this forces lots of rope<wchar_t, ...> instantiations, creating a
- // code bloat and compile time problem. (Fixed in 7.2.)
- // - wchar_t is 4 bytes wide on most UNIX platforms, making it
- // unattractive for unicode strings. Unsigned short may be a better
- // character type.
- inline void
- rotate(_Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __first,
- _Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __middle,
- _Rope_iterator<wchar_t, __STL_DEFAULT_ALLOCATOR(char)> __last)
- { _Rope_rotate(__first, __middle, __last); }
-# endif
-
-_GLIBCXX_END_NAMESPACE
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/slist b/gcc-4.4.3/libstdc++-v3/include/ext/slist
deleted file mode 100644
index a34e36e31..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/slist
+++ /dev/null
@@ -1,1077 +0,0 @@
-// Singly-linked list implementation -*- C++ -*-
-
-// Copyright (C) 2001, 2002, 2004, 2005, 2007, 2008, 2009
-// Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/*
- * Copyright (c) 1997
- * Silicon Graphics Computer Systems, Inc.
- *
- * Permission to use, copy, modify, distribute and sell this software
- * and its documentation for any purpose is hereby granted without fee,
- * provided that the above copyright notice appear in all copies and
- * that both that copyright notice and this permission notice appear
- * in supporting documentation. Silicon Graphics makes no
- * representations about the suitability of this software for any
- * purpose. It is provided "as is" without express or implied warranty.
- *
- */
-
-/** @file ext/slist
- * This file is a GNU extension to the Standard C++ Library (possibly
- * containing extensions from the HP/SGI STL subset).
- */
-
-#ifndef _SLIST
-#define _SLIST 1
-
-#include <algorithm>
-#include <bits/allocator.h>
-#include <bits/stl_construct.h>
-#include <bits/stl_uninitialized.h>
-#include <bits/concept_check.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- using std::size_t;
- using std::ptrdiff_t;
- using std::_Construct;
- using std::_Destroy;
- using std::allocator;
- using std::__true_type;
- using std::__false_type;
-
- struct _Slist_node_base
- {
- _Slist_node_base* _M_next;
- };
-
- inline _Slist_node_base*
- __slist_make_link(_Slist_node_base* __prev_node,
- _Slist_node_base* __new_node)
- {
- __new_node->_M_next = __prev_node->_M_next;
- __prev_node->_M_next = __new_node;
- return __new_node;
- }
-
- inline _Slist_node_base*
- __slist_previous(_Slist_node_base* __head,
- const _Slist_node_base* __node)
- {
- while (__head && __head->_M_next != __node)
- __head = __head->_M_next;
- return __head;
- }
-
- inline const _Slist_node_base*
- __slist_previous(const _Slist_node_base* __head,
- const _Slist_node_base* __node)
- {
- while (__head && __head->_M_next != __node)
- __head = __head->_M_next;
- return __head;
- }
-
- inline void
- __slist_splice_after(_Slist_node_base* __pos,
- _Slist_node_base* __before_first,
- _Slist_node_base* __before_last)
- {
- if (__pos != __before_first && __pos != __before_last)
- {
- _Slist_node_base* __first = __before_first->_M_next;
- _Slist_node_base* __after = __pos->_M_next;
- __before_first->_M_next = __before_last->_M_next;
- __pos->_M_next = __first;
- __before_last->_M_next = __after;
- }
- }
-
- inline void
- __slist_splice_after(_Slist_node_base* __pos, _Slist_node_base* __head)
- {
- _Slist_node_base* __before_last = __slist_previous(__head, 0);
- if (__before_last != __head)
- {
- _Slist_node_base* __after = __pos->_M_next;
- __pos->_M_next = __head->_M_next;
- __head->_M_next = 0;
- __before_last->_M_next = __after;
- }
- }
-
- inline _Slist_node_base*
- __slist_reverse(_Slist_node_base* __node)
- {
- _Slist_node_base* __result = __node;
- __node = __node->_M_next;
- __result->_M_next = 0;
- while(__node)
- {
- _Slist_node_base* __next = __node->_M_next;
- __node->_M_next = __result;
- __result = __node;
- __node = __next;
- }
- return __result;
- }
-
- inline size_t
- __slist_size(_Slist_node_base* __node)
- {
- size_t __result = 0;
- for (; __node != 0; __node = __node->_M_next)
- ++__result;
- return __result;
- }
-
- template <class _Tp>
- struct _Slist_node : public _Slist_node_base
- {
- _Tp _M_data;
- };
-
- struct _Slist_iterator_base
- {
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef std::forward_iterator_tag iterator_category;
-
- _Slist_node_base* _M_node;
-
- _Slist_iterator_base(_Slist_node_base* __x)
- : _M_node(__x) {}
-
- void
- _M_incr()
- { _M_node = _M_node->_M_next; }
-
- bool
- operator==(const _Slist_iterator_base& __x) const
- { return _M_node == __x._M_node; }
-
- bool
- operator!=(const _Slist_iterator_base& __x) const
- { return _M_node != __x._M_node; }
- };
-
- template <class _Tp, class _Ref, class _Ptr>
- struct _Slist_iterator : public _Slist_iterator_base
- {
- typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
- typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
- typedef _Slist_iterator<_Tp, _Ref, _Ptr> _Self;
-
- typedef _Tp value_type;
- typedef _Ptr pointer;
- typedef _Ref reference;
- typedef _Slist_node<_Tp> _Node;
-
- explicit
- _Slist_iterator(_Node* __x)
- : _Slist_iterator_base(__x) {}
-
- _Slist_iterator()
- : _Slist_iterator_base(0) {}
-
- _Slist_iterator(const iterator& __x)
- : _Slist_iterator_base(__x._M_node) {}
-
- reference
- operator*() const
- { return ((_Node*) _M_node)->_M_data; }
-
- pointer
- operator->() const
- { return &(operator*()); }
-
- _Self&
- operator++()
- {
- _M_incr();
- return *this;
- }
-
- _Self
- operator++(int)
- {
- _Self __tmp = *this;
- _M_incr();
- return __tmp;
- }
- };
-
- template <class _Tp, class _Alloc>
- struct _Slist_base
- : public _Alloc::template rebind<_Slist_node<_Tp> >::other
- {
- typedef typename _Alloc::template rebind<_Slist_node<_Tp> >::other
- _Node_alloc;
- typedef _Alloc allocator_type;
-
- allocator_type
- get_allocator() const
- { return *static_cast<const _Node_alloc*>(this); }
-
- _Slist_base(const allocator_type& __a)
- : _Node_alloc(__a)
- { this->_M_head._M_next = 0; }
-
- ~_Slist_base()
- { _M_erase_after(&this->_M_head, 0); }
-
- protected:
- _Slist_node_base _M_head;
-
- _Slist_node<_Tp>*
- _M_get_node()
- { return _Node_alloc::allocate(1); }
-
- void
- _M_put_node(_Slist_node<_Tp>* __p)
- { _Node_alloc::deallocate(__p, 1); }
-
- protected:
- _Slist_node_base* _M_erase_after(_Slist_node_base* __pos)
- {
- _Slist_node<_Tp>* __next = (_Slist_node<_Tp>*) (__pos->_M_next);
- _Slist_node_base* __next_next = __next->_M_next;
- __pos->_M_next = __next_next;
- get_allocator().destroy(&__next->_M_data);
- _M_put_node(__next);
- return __next_next;
- }
- _Slist_node_base* _M_erase_after(_Slist_node_base*, _Slist_node_base*);
- };
-
- template <class _Tp, class _Alloc>
- _Slist_node_base*
- _Slist_base<_Tp,_Alloc>::_M_erase_after(_Slist_node_base* __before_first,
- _Slist_node_base* __last_node)
- {
- _Slist_node<_Tp>* __cur = (_Slist_node<_Tp>*) (__before_first->_M_next);
- while (__cur != __last_node)
- {
- _Slist_node<_Tp>* __tmp = __cur;
- __cur = (_Slist_node<_Tp>*) __cur->_M_next;
- get_allocator().destroy(&__tmp->_M_data);
- _M_put_node(__tmp);
- }
- __before_first->_M_next = __last_node;
- return __last_node;
- }
-
- /**
- * This is an SGI extension.
- * @ingroup SGIextensions
- * @doctodo
- */
- template <class _Tp, class _Alloc = allocator<_Tp> >
- class slist : private _Slist_base<_Tp,_Alloc>
- {
- // concept requirements
- __glibcxx_class_requires(_Tp, _SGIAssignableConcept)
-
- private:
- typedef _Slist_base<_Tp,_Alloc> _Base;
-
- public:
- typedef _Tp value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
-
- typedef _Slist_iterator<_Tp, _Tp&, _Tp*> iterator;
- typedef _Slist_iterator<_Tp, const _Tp&, const _Tp*> const_iterator;
-
- typedef typename _Base::allocator_type allocator_type;
-
- allocator_type
- get_allocator() const
- { return _Base::get_allocator(); }
-
- private:
- typedef _Slist_node<_Tp> _Node;
- typedef _Slist_node_base _Node_base;
- typedef _Slist_iterator_base _Iterator_base;
-
- _Node*
- _M_create_node(const value_type& __x)
- {
- _Node* __node = this->_M_get_node();
- __try
- {
- get_allocator().construct(&__node->_M_data, __x);
- __node->_M_next = 0;
- }
- __catch(...)
- {
- this->_M_put_node(__node);
- __throw_exception_again;
- }
- return __node;
- }
-
- _Node*
- _M_create_node()
- {
- _Node* __node = this->_M_get_node();
- __try
- {
- get_allocator().construct(&__node->_M_data, value_type());
- __node->_M_next = 0;
- }
- __catch(...)
- {
- this->_M_put_node(__node);
- __throw_exception_again;
- }
- return __node;
- }
-
- public:
- explicit
- slist(const allocator_type& __a = allocator_type())
- : _Base(__a) {}
-
- slist(size_type __n, const value_type& __x,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { _M_insert_after_fill(&this->_M_head, __n, __x); }
-
- explicit
- slist(size_type __n)
- : _Base(allocator_type())
- { _M_insert_after_fill(&this->_M_head, __n, value_type()); }
-
- // We don't need any dispatching tricks here, because
- // _M_insert_after_range already does them.
- template <class _InputIterator>
- slist(_InputIterator __first, _InputIterator __last,
- const allocator_type& __a = allocator_type())
- : _Base(__a)
- { _M_insert_after_range(&this->_M_head, __first, __last); }
-
- slist(const slist& __x)
- : _Base(__x.get_allocator())
- { _M_insert_after_range(&this->_M_head, __x.begin(), __x.end()); }
-
- slist&
- operator= (const slist& __x);
-
- ~slist() {}
-
- public:
- // assign(), a generalized assignment member function. Two
- // versions: one that takes a count, and one that takes a range.
- // The range version is a member template, so we dispatch on whether
- // or not the type is an integer.
-
- void
- assign(size_type __n, const _Tp& __val)
- { _M_fill_assign(__n, __val); }
-
- void
- _M_fill_assign(size_type __n, const _Tp& __val);
-
- template <class _InputIterator>
- void
- assign(_InputIterator __first, _InputIterator __last)
- {
- typedef typename std::__is_integer<_InputIterator>::__type _Integral;
- _M_assign_dispatch(__first, __last, _Integral());
- }
-
- template <class _Integer>
- void
- _M_assign_dispatch(_Integer __n, _Integer __val, __true_type)
- { _M_fill_assign((size_type) __n, (_Tp) __val); }
-
- template <class _InputIterator>
- void
- _M_assign_dispatch(_InputIterator __first, _InputIterator __last,
- __false_type);
-
- public:
-
- iterator
- begin()
- { return iterator((_Node*)this->_M_head._M_next); }
-
- const_iterator
- begin() const
- { return const_iterator((_Node*)this->_M_head._M_next);}
-
- iterator
- end()
- { return iterator(0); }
-
- const_iterator
- end() const
- { return const_iterator(0); }
-
- // Experimental new feature: before_begin() returns a
- // non-dereferenceable iterator that, when incremented, yields
- // begin(). This iterator may be used as the argument to
- // insert_after, erase_after, etc. Note that even for an empty
- // slist, before_begin() is not the same iterator as end(). It
- // is always necessary to increment before_begin() at least once to
- // obtain end().
- iterator
- before_begin()
- { return iterator((_Node*) &this->_M_head); }
-
- const_iterator
- before_begin() const
- { return const_iterator((_Node*) &this->_M_head); }
-
- size_type
- size() const
- { return __slist_size(this->_M_head._M_next); }
-
- size_type
- max_size() const
- { return size_type(-1); }
-
- bool
- empty() const
- { return this->_M_head._M_next == 0; }
-
- void
- swap(slist& __x)
- { std::swap(this->_M_head._M_next, __x._M_head._M_next); }
-
- public:
-
- reference
- front()
- { return ((_Node*) this->_M_head._M_next)->_M_data; }
-
- const_reference
- front() const
- { return ((_Node*) this->_M_head._M_next)->_M_data; }
-
- void
- push_front(const value_type& __x)
- { __slist_make_link(&this->_M_head, _M_create_node(__x)); }
-
- void
- push_front()
- { __slist_make_link(&this->_M_head, _M_create_node()); }
-
- void
- pop_front()
- {
- _Node* __node = (_Node*) this->_M_head._M_next;
- this->_M_head._M_next = __node->_M_next;
- get_allocator().destroy(&__node->_M_data);
- this->_M_put_node(__node);
- }
-
- iterator
- previous(const_iterator __pos)
- { return iterator((_Node*) __slist_previous(&this->_M_head,
- __pos._M_node)); }
-
- const_iterator
- previous(const_iterator __pos) const
- { return const_iterator((_Node*) __slist_previous(&this->_M_head,
- __pos._M_node)); }
-
- private:
- _Node*
- _M_insert_after(_Node_base* __pos, const value_type& __x)
- { return (_Node*) (__slist_make_link(__pos, _M_create_node(__x))); }
-
- _Node*
- _M_insert_after(_Node_base* __pos)
- { return (_Node*) (__slist_make_link(__pos, _M_create_node())); }
-
- void
- _M_insert_after_fill(_Node_base* __pos,
- size_type __n, const value_type& __x)
- {
- for (size_type __i = 0; __i < __n; ++__i)
- __pos = __slist_make_link(__pos, _M_create_node(__x));
- }
-
- // Check whether it's an integral type. If so, it's not an iterator.
- template <class _InIterator>
- void
- _M_insert_after_range(_Node_base* __pos,
- _InIterator __first, _InIterator __last)
- {
- typedef typename std::__is_integer<_InIterator>::__type _Integral;
- _M_insert_after_range(__pos, __first, __last, _Integral());
- }
-
- template <class _Integer>
- void
- _M_insert_after_range(_Node_base* __pos, _Integer __n, _Integer __x,
- __true_type)
- { _M_insert_after_fill(__pos, __n, __x); }
-
- template <class _InIterator>
- void
- _M_insert_after_range(_Node_base* __pos,
- _InIterator __first, _InIterator __last,
- __false_type)
- {
- while (__first != __last)
- {
- __pos = __slist_make_link(__pos, _M_create_node(*__first));
- ++__first;
- }
- }
-
- public:
- iterator
- insert_after(iterator __pos, const value_type& __x)
- { return iterator(_M_insert_after(__pos._M_node, __x)); }
-
- iterator
- insert_after(iterator __pos)
- { return insert_after(__pos, value_type()); }
-
- void
- insert_after(iterator __pos, size_type __n, const value_type& __x)
- { _M_insert_after_fill(__pos._M_node, __n, __x); }
-
- // We don't need any dispatching tricks here, because
- // _M_insert_after_range already does them.
- template <class _InIterator>
- void
- insert_after(iterator __pos, _InIterator __first, _InIterator __last)
- { _M_insert_after_range(__pos._M_node, __first, __last); }
-
- iterator
- insert(iterator __pos, const value_type& __x)
- { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
- __pos._M_node),
- __x)); }
-
- iterator
- insert(iterator __pos)
- { return iterator(_M_insert_after(__slist_previous(&this->_M_head,
- __pos._M_node),
- value_type())); }
-
- void
- insert(iterator __pos, size_type __n, const value_type& __x)
- { _M_insert_after_fill(__slist_previous(&this->_M_head, __pos._M_node),
- __n, __x); }
-
- // We don't need any dispatching tricks here, because
- // _M_insert_after_range already does them.
- template <class _InIterator>
- void
- insert(iterator __pos, _InIterator __first, _InIterator __last)
- { _M_insert_after_range(__slist_previous(&this->_M_head, __pos._M_node),
- __first, __last); }
-
- public:
- iterator
- erase_after(iterator __pos)
- { return iterator((_Node*) this->_M_erase_after(__pos._M_node)); }
-
- iterator
- erase_after(iterator __before_first, iterator __last)
- {
- return iterator((_Node*) this->_M_erase_after(__before_first._M_node,
- __last._M_node));
- }
-
- iterator
- erase(iterator __pos)
- {
- return iterator((_Node*) this->_M_erase_after
- (__slist_previous(&this->_M_head, __pos._M_node)));
- }
-
- iterator
- erase(iterator __first, iterator __last)
- {
- return iterator((_Node*) this->_M_erase_after
- (__slist_previous(&this->_M_head, __first._M_node),
- __last._M_node));
- }
-
- void
- resize(size_type new_size, const _Tp& __x);
-
- void
- resize(size_type new_size)
- { resize(new_size, _Tp()); }
-
- void
- clear()
- { this->_M_erase_after(&this->_M_head, 0); }
-
- public:
- // Moves the range [__before_first + 1, __before_last + 1) to *this,
- // inserting it immediately after __pos. This is constant time.
- void
- splice_after(iterator __pos,
- iterator __before_first, iterator __before_last)
- {
- if (__before_first != __before_last)
- __slist_splice_after(__pos._M_node, __before_first._M_node,
- __before_last._M_node);
- }
-
- // Moves the element that follows __prev to *this, inserting it
- // immediately after __pos. This is constant time.
- void
- splice_after(iterator __pos, iterator __prev)
- { __slist_splice_after(__pos._M_node,
- __prev._M_node, __prev._M_node->_M_next); }
-
- // Removes all of the elements from the list __x to *this, inserting
- // them immediately after __pos. __x must not be *this. Complexity:
- // linear in __x.size().
- void
- splice_after(iterator __pos, slist& __x)
- { __slist_splice_after(__pos._M_node, &__x._M_head); }
-
- // Linear in distance(begin(), __pos), and linear in __x.size().
- void
- splice(iterator __pos, slist& __x)
- {
- if (__x._M_head._M_next)
- __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
- &__x._M_head,
- __slist_previous(&__x._M_head, 0)); }
-
- // Linear in distance(begin(), __pos), and in distance(__x.begin(), __i).
- void
- splice(iterator __pos, slist& __x, iterator __i)
- { __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
- __slist_previous(&__x._M_head, __i._M_node),
- __i._M_node); }
-
- // Linear in distance(begin(), __pos), in distance(__x.begin(), __first),
- // and in distance(__first, __last).
- void
- splice(iterator __pos, slist& __x, iterator __first, iterator __last)
- {
- if (__first != __last)
- __slist_splice_after(__slist_previous(&this->_M_head, __pos._M_node),
- __slist_previous(&__x._M_head, __first._M_node),
- __slist_previous(__first._M_node,
- __last._M_node));
- }
-
- public:
- void
- reverse()
- {
- if (this->_M_head._M_next)
- this->_M_head._M_next = __slist_reverse(this->_M_head._M_next);
- }
-
- void
- remove(const _Tp& __val);
-
- void
- unique();
-
- void
- merge(slist& __x);
-
- void
- sort();
-
- template <class _Predicate>
- void
- remove_if(_Predicate __pred);
-
- template <class _BinaryPredicate>
- void
- unique(_BinaryPredicate __pred);
-
- template <class _StrictWeakOrdering>
- void
- merge(slist&, _StrictWeakOrdering);
-
- template <class _StrictWeakOrdering>
- void
- sort(_StrictWeakOrdering __comp);
- };
-
- template <class _Tp, class _Alloc>
- slist<_Tp, _Alloc>&
- slist<_Tp, _Alloc>::operator=(const slist<_Tp, _Alloc>& __x)
- {
- if (&__x != this)
- {
- _Node_base* __p1 = &this->_M_head;
- _Node* __n1 = (_Node*) this->_M_head._M_next;
- const _Node* __n2 = (const _Node*) __x._M_head._M_next;
- while (__n1 && __n2)
- {
- __n1->_M_data = __n2->_M_data;
- __p1 = __n1;
- __n1 = (_Node*) __n1->_M_next;
- __n2 = (const _Node*) __n2->_M_next;
- }
- if (__n2 == 0)
- this->_M_erase_after(__p1, 0);
- else
- _M_insert_after_range(__p1, const_iterator((_Node*)__n2),
- const_iterator(0));
- }
- return *this;
- }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::_M_fill_assign(size_type __n, const _Tp& __val)
- {
- _Node_base* __prev = &this->_M_head;
- _Node* __node = (_Node*) this->_M_head._M_next;
- for (; __node != 0 && __n > 0; --__n)
- {
- __node->_M_data = __val;
- __prev = __node;
- __node = (_Node*) __node->_M_next;
- }
- if (__n > 0)
- _M_insert_after_fill(__prev, __n, __val);
- else
- this->_M_erase_after(__prev, 0);
- }
-
- template <class _Tp, class _Alloc>
- template <class _InputIterator>
- void
- slist<_Tp, _Alloc>::_M_assign_dispatch(_InputIterator __first,
- _InputIterator __last,
- __false_type)
- {
- _Node_base* __prev = &this->_M_head;
- _Node* __node = (_Node*) this->_M_head._M_next;
- while (__node != 0 && __first != __last)
- {
- __node->_M_data = *__first;
- __prev = __node;
- __node = (_Node*) __node->_M_next;
- ++__first;
- }
- if (__first != __last)
- _M_insert_after_range(__prev, __first, __last);
- else
- this->_M_erase_after(__prev, 0);
- }
-
- template <class _Tp, class _Alloc>
- inline bool
- operator==(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- {
- typedef typename slist<_Tp,_Alloc>::const_iterator const_iterator;
- const_iterator __end1 = _SL1.end();
- const_iterator __end2 = _SL2.end();
-
- const_iterator __i1 = _SL1.begin();
- const_iterator __i2 = _SL2.begin();
- while (__i1 != __end1 && __i2 != __end2 && *__i1 == *__i2)
- {
- ++__i1;
- ++__i2;
- }
- return __i1 == __end1 && __i2 == __end2;
- }
-
-
- template <class _Tp, class _Alloc>
- inline bool
- operator<(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- { return std::lexicographical_compare(_SL1.begin(), _SL1.end(),
- _SL2.begin(), _SL2.end()); }
-
- template <class _Tp, class _Alloc>
- inline bool
- operator!=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- { return !(_SL1 == _SL2); }
-
- template <class _Tp, class _Alloc>
- inline bool
- operator>(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- { return _SL2 < _SL1; }
-
- template <class _Tp, class _Alloc>
- inline bool
- operator<=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- { return !(_SL2 < _SL1); }
-
- template <class _Tp, class _Alloc>
- inline bool
- operator>=(const slist<_Tp, _Alloc>& _SL1, const slist<_Tp, _Alloc>& _SL2)
- { return !(_SL1 < _SL2); }
-
- template <class _Tp, class _Alloc>
- inline void
- swap(slist<_Tp, _Alloc>& __x, slist<_Tp, _Alloc>& __y)
- { __x.swap(__y); }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::resize(size_type __len, const _Tp& __x)
- {
- _Node_base* __cur = &this->_M_head;
- while (__cur->_M_next != 0 && __len > 0)
- {
- --__len;
- __cur = __cur->_M_next;
- }
- if (__cur->_M_next)
- this->_M_erase_after(__cur, 0);
- else
- _M_insert_after_fill(__cur, __len, __x);
- }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::remove(const _Tp& __val)
- {
- _Node_base* __cur = &this->_M_head;
- while (__cur && __cur->_M_next)
- {
- if (((_Node*) __cur->_M_next)->_M_data == __val)
- this->_M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
- }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::unique()
- {
- _Node_base* __cur = this->_M_head._M_next;
- if (__cur)
- {
- while (__cur->_M_next)
- {
- if (((_Node*)__cur)->_M_data
- == ((_Node*)(__cur->_M_next))->_M_data)
- this->_M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
- }
- }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x)
- {
- _Node_base* __n1 = &this->_M_head;
- while (__n1->_M_next && __x._M_head._M_next)
- {
- if (((_Node*) __x._M_head._M_next)->_M_data
- < ((_Node*) __n1->_M_next)->_M_data)
- __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
- __n1 = __n1->_M_next;
- }
- if (__x._M_head._M_next)
- {
- __n1->_M_next = __x._M_head._M_next;
- __x._M_head._M_next = 0;
- }
- }
-
- template <class _Tp, class _Alloc>
- void
- slist<_Tp, _Alloc>::sort()
- {
- if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
- {
- slist __carry;
- slist __counter[64];
- int __fill = 0;
- while (!empty())
- {
- __slist_splice_after(&__carry._M_head,
- &this->_M_head, this->_M_head._M_next);
- int __i = 0;
- while (__i < __fill && !__counter[__i].empty())
- {
- __counter[__i].merge(__carry);
- __carry.swap(__counter[__i]);
- ++__i;
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill)
- ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1]);
- this->swap(__counter[__fill-1]);
- }
- }
-
- template <class _Tp, class _Alloc>
- template <class _Predicate>
- void slist<_Tp, _Alloc>::remove_if(_Predicate __pred)
- {
- _Node_base* __cur = &this->_M_head;
- while (__cur->_M_next)
- {
- if (__pred(((_Node*) __cur->_M_next)->_M_data))
- this->_M_erase_after(__cur);
- else
- __cur = __cur->_M_next;
- }
- }
-
- template <class _Tp, class _Alloc>
- template <class _BinaryPredicate>
- void
- slist<_Tp, _Alloc>::unique(_BinaryPredicate __pred)
- {
- _Node* __cur = (_Node*) this->_M_head._M_next;
- if (__cur)
- {
- while (__cur->_M_next)
- {
- if (__pred(((_Node*)__cur)->_M_data,
- ((_Node*)(__cur->_M_next))->_M_data))
- this->_M_erase_after(__cur);
- else
- __cur = (_Node*) __cur->_M_next;
- }
- }
- }
-
- template <class _Tp, class _Alloc>
- template <class _StrictWeakOrdering>
- void
- slist<_Tp, _Alloc>::merge(slist<_Tp, _Alloc>& __x,
- _StrictWeakOrdering __comp)
- {
- _Node_base* __n1 = &this->_M_head;
- while (__n1->_M_next && __x._M_head._M_next)
- {
- if (__comp(((_Node*) __x._M_head._M_next)->_M_data,
- ((_Node*) __n1->_M_next)->_M_data))
- __slist_splice_after(__n1, &__x._M_head, __x._M_head._M_next);
- __n1 = __n1->_M_next;
- }
- if (__x._M_head._M_next)
- {
- __n1->_M_next = __x._M_head._M_next;
- __x._M_head._M_next = 0;
- }
- }
-
- template <class _Tp, class _Alloc>
- template <class _StrictWeakOrdering>
- void
- slist<_Tp, _Alloc>::sort(_StrictWeakOrdering __comp)
- {
- if (this->_M_head._M_next && this->_M_head._M_next->_M_next)
- {
- slist __carry;
- slist __counter[64];
- int __fill = 0;
- while (!empty())
- {
- __slist_splice_after(&__carry._M_head,
- &this->_M_head, this->_M_head._M_next);
- int __i = 0;
- while (__i < __fill && !__counter[__i].empty())
- {
- __counter[__i].merge(__carry, __comp);
- __carry.swap(__counter[__i]);
- ++__i;
- }
- __carry.swap(__counter[__i]);
- if (__i == __fill)
- ++__fill;
- }
-
- for (int __i = 1; __i < __fill; ++__i)
- __counter[__i].merge(__counter[__i-1], __comp);
- this->swap(__counter[__fill-1]);
- }
- }
-
-_GLIBCXX_END_NAMESPACE
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- // Specialization of insert_iterator so that insertions will be constant
- // time rather than linear time.
- template <class _Tp, class _Alloc>
- class insert_iterator<__gnu_cxx::slist<_Tp, _Alloc> >
- {
- protected:
- typedef __gnu_cxx::slist<_Tp, _Alloc> _Container;
- _Container* container;
- typename _Container::iterator iter;
-
- public:
- typedef _Container container_type;
- typedef output_iterator_tag iterator_category;
- typedef void value_type;
- typedef void difference_type;
- typedef void pointer;
- typedef void reference;
-
- insert_iterator(_Container& __x, typename _Container::iterator __i)
- : container(&__x)
- {
- if (__i == __x.begin())
- iter = __x.before_begin();
- else
- iter = __x.previous(__i);
- }
-
- insert_iterator<_Container>&
- operator=(const typename _Container::value_type& __value)
- {
- iter = container->insert_after(iter, __value);
- return *this;
- }
-
- insert_iterator<_Container>&
- operator*()
- { return *this; }
-
- insert_iterator<_Container>&
- operator++()
- { return *this; }
-
- insert_iterator<_Container>&
- operator++(int)
- { return *this; }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/sso_string_base.h b/gcc-4.4.3/libstdc++-v3/include/ext/sso_string_base.h
deleted file mode 100644
index c32960902..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/sso_string_base.h
+++ /dev/null
@@ -1,592 +0,0 @@
-// Short-string-optimized versatile string base -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/sso_string_base.h
- * This file is a GNU extension to the Standard C++ Library.
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _SSO_STRING_BASE_H
-#define _SSO_STRING_BASE_H 1
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- class __sso_string_base
- : protected __vstring_utility<_CharT, _Traits, _Alloc>
- {
- public:
- typedef _Traits traits_type;
- typedef typename _Traits::char_type value_type;
-
- typedef __vstring_utility<_CharT, _Traits, _Alloc> _Util_Base;
- typedef typename _Util_Base::_CharT_alloc_type _CharT_alloc_type;
- typedef typename _CharT_alloc_type::size_type size_type;
-
- private:
- // Data Members:
- typename _Util_Base::template _Alloc_hider<_CharT_alloc_type>
- _M_dataplus;
- size_type _M_string_length;
-
- enum { _S_local_capacity = 15 };
-
- union
- {
- _CharT _M_local_data[_S_local_capacity + 1];
- size_type _M_allocated_capacity;
- };
-
- void
- _M_data(_CharT* __p)
- { _M_dataplus._M_p = __p; }
-
- void
- _M_length(size_type __length)
- { _M_string_length = __length; }
-
- void
- _M_capacity(size_type __capacity)
- { _M_allocated_capacity = __capacity; }
-
- bool
- _M_is_local() const
- { return _M_data() == _M_local_data; }
-
- // Create & Destroy
- _CharT*
- _M_create(size_type&, size_type);
-
- void
- _M_dispose()
- {
- if (!_M_is_local())
- _M_destroy(_M_allocated_capacity);
-#if __google_stl_debug_string_dangling
- else {
- // Wipe local storage for destructed string with 0xCD.
- // This mimics what DebugAllocation does to free()d memory.
- __builtin_memset(_M_local_data, 0xcd, sizeof(_M_local_data));
- }
-#endif
- }
-
- void
- _M_destroy(size_type __size) throw()
- { _M_get_allocator().deallocate(_M_data(), __size + 1); }
-
- // _M_construct_aux is used to implement the 21.3.1 para 15 which
- // requires special behaviour if _InIterator is an integral type
- template<typename _InIterator>
- void
- _M_construct_aux(_InIterator __beg, _InIterator __end,
- std::__false_type)
- {
- typedef typename iterator_traits<_InIterator>::iterator_category _Tag;
- _M_construct(__beg, __end, _Tag());
- }
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 438. Ambiguity in the "do the right thing" clause
- template<typename _Integer>
- void
- _M_construct_aux(_Integer __beg, _Integer __end, std::__true_type)
- { _M_construct(static_cast<size_type>(__beg), __end); }
-
- template<typename _InIterator>
- void
- _M_construct(_InIterator __beg, _InIterator __end)
- {
- typedef typename std::__is_integer<_InIterator>::__type _Integral;
- _M_construct_aux(__beg, __end, _Integral());
- }
-
- // For Input Iterators, used in istreambuf_iterators, etc.
- template<typename _InIterator>
- void
- _M_construct(_InIterator __beg, _InIterator __end,
- std::input_iterator_tag);
-
- // For forward_iterators up to random_access_iterators, used for
- // string::iterator, _CharT*, etc.
- template<typename _FwdIterator>
- void
- _M_construct(_FwdIterator __beg, _FwdIterator __end,
- std::forward_iterator_tag);
-
- void
- _M_construct(size_type __req, _CharT __c);
-
- public:
- size_type
- _M_max_size() const
- { return (_M_get_allocator().max_size() - 1) / 2; }
-
- _CharT*
- _M_data() const
- { return _M_dataplus._M_p; }
-
- size_type
- _M_length() const
- { return _M_string_length; }
-
- size_type
- _M_capacity() const
- {
- return _M_is_local() ? size_type(_S_local_capacity)
- : _M_allocated_capacity;
- }
-
- bool
- _M_is_shared() const
- { return false; }
-
- void
- _M_set_leaked() { }
-
- void
- _M_leak() { }
-
- void
- _M_set_length_no_wipe(size_type __n)
- {
- _M_length(__n);
- traits_type::assign(_M_data()[__n], _CharT());
- }
-
- void
- _M_set_length(size_type __n)
- {
-#if __google_stl_debug_string_dangling
- if (__n + 1 < _M_length())
- {
- // Wipe the storage with 0xCD.
- // Also wipes the old NUL terminator.
- __builtin_memset(_M_data() + __n + 1, 0xcd, _M_length() - __n);
- }
-#endif
- _M_set_length_no_wipe(__n);
- }
-
- __sso_string_base()
- : _M_dataplus(_M_local_data)
- { _M_set_length_no_wipe(0); }
-
- __sso_string_base(const _Alloc& __a);
-
- __sso_string_base(const __sso_string_base& __rcs);
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- __sso_string_base(__sso_string_base&& __rcs);
-#endif
-
- __sso_string_base(size_type __n, _CharT __c, const _Alloc& __a);
-
- template<typename _InputIterator>
- __sso_string_base(_InputIterator __beg, _InputIterator __end,
- const _Alloc& __a);
-
- ~__sso_string_base()
- { _M_dispose(); }
-
- _CharT_alloc_type&
- _M_get_allocator()
- { return _M_dataplus; }
-
- const _CharT_alloc_type&
- _M_get_allocator() const
- { return _M_dataplus; }
-
- void
- _M_swap(__sso_string_base& __rcs);
-
- void
- _M_assign(const __sso_string_base& __rcs);
-
- void
- _M_reserve(size_type __res);
-
- void
- _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
- size_type __len2);
-
- void
- _M_erase(size_type __pos, size_type __n);
-
- void
- _M_clear()
- { _M_set_length(0); }
-
- bool
- _M_compare(const __sso_string_base&) const
- { return false; }
- };
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_swap(__sso_string_base& __rcs)
- {
- if (this == &__rcs)
- return;
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 431. Swapping containers with unequal allocators.
- std::__alloc_swap<_CharT_alloc_type>::_S_do_it(_M_get_allocator(),
- __rcs._M_get_allocator());
-
- if (_M_is_local())
- if (__rcs._M_is_local())
- {
- if (_M_length() && __rcs._M_length())
- {
- _CharT __tmp_data[_S_local_capacity + 1];
- traits_type::copy(__tmp_data, __rcs._M_local_data,
- _S_local_capacity + 1);
- traits_type::copy(__rcs._M_local_data, _M_local_data,
- _S_local_capacity + 1);
- traits_type::copy(_M_local_data, __tmp_data,
- _S_local_capacity + 1);
- }
- else if (__rcs._M_length())
- {
- traits_type::copy(_M_local_data, __rcs._M_local_data,
- _S_local_capacity + 1);
- _M_length(__rcs._M_length());
- __rcs._M_set_length(0);
- return;
- }
- else if (_M_length())
- {
- traits_type::copy(__rcs._M_local_data, _M_local_data,
- _S_local_capacity + 1);
- __rcs._M_length(_M_length());
- _M_set_length(0);
- return;
- }
- }
- else
- {
- const size_type __tmp_capacity = __rcs._M_allocated_capacity;
- traits_type::copy(__rcs._M_local_data, _M_local_data,
- _S_local_capacity + 1);
- _M_data(__rcs._M_data());
- __rcs._M_data(__rcs._M_local_data);
- _M_capacity(__tmp_capacity);
- }
- else
- {
- const size_type __tmp_capacity = _M_allocated_capacity;
- if (__rcs._M_is_local())
- {
- traits_type::copy(_M_local_data, __rcs._M_local_data,
- _S_local_capacity + 1);
- __rcs._M_data(_M_data());
- _M_data(_M_local_data);
- }
- else
- {
- _CharT* __tmp_ptr = _M_data();
- _M_data(__rcs._M_data());
- __rcs._M_data(__tmp_ptr);
- _M_capacity(__rcs._M_allocated_capacity);
- }
- __rcs._M_capacity(__tmp_capacity);
- }
-
- const size_type __tmp_length = _M_length();
- _M_length(__rcs._M_length());
- __rcs._M_length(__tmp_length);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- _CharT*
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_create(size_type& __capacity, size_type __old_capacity)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 83. String::npos vs. string::max_size()
- if (__capacity > _M_max_size())
- std::__throw_length_error(__N("__sso_string_base::_M_create"));
-
- // The below implements an exponential growth policy, necessary to
- // meet amortized linear time requirements of the library: see
- // http://gcc.gnu.org/ml/libstdc++/2001-07/msg00085.html.
- if (__capacity > __old_capacity && __capacity < 2 * __old_capacity)
- {
- __capacity = 2 * __old_capacity;
- // Never allocate a string bigger than max_size.
- if (__capacity > _M_max_size())
- __capacity = _M_max_size();
- }
-
- // NB: Need an array of char_type[__capacity], plus a terminating
- // null char_type() element.
- return _M_get_allocator().allocate(__capacity + 1);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __sso_string_base<_CharT, _Traits, _Alloc>::
- __sso_string_base(const _Alloc& __a)
- : _M_dataplus(__a, _M_local_data)
- { _M_set_length_no_wipe(0); }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __sso_string_base<_CharT, _Traits, _Alloc>::
- __sso_string_base(const __sso_string_base& __rcs)
- : _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
- { _M_construct(__rcs._M_data(), __rcs._M_data() + __rcs._M_length()); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _CharT, typename _Traits, typename _Alloc>
- __sso_string_base<_CharT, _Traits, _Alloc>::
- __sso_string_base(__sso_string_base&& __rcs)
- : _M_dataplus(__rcs._M_get_allocator(), _M_local_data)
- {
- if (__rcs._M_is_local())
- {
- if (__rcs._M_length())
- traits_type::copy(_M_local_data, __rcs._M_local_data,
- _S_local_capacity + 1);
- }
- else
- {
- _M_data(__rcs._M_data());
- _M_capacity(__rcs._M_allocated_capacity);
- }
-
- _M_length(__rcs._M_length());
- __rcs._M_length(0);
- __rcs._M_data(__rcs._M_local_data);
- }
-#endif
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- __sso_string_base<_CharT, _Traits, _Alloc>::
- __sso_string_base(size_type __n, _CharT __c, const _Alloc& __a)
- : _M_dataplus(__a, _M_local_data)
- { _M_construct(__n, __c); }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InputIterator>
- __sso_string_base<_CharT, _Traits, _Alloc>::
- __sso_string_base(_InputIterator __beg, _InputIterator __end,
- const _Alloc& __a)
- : _M_dataplus(__a, _M_local_data)
- { _M_construct(__beg, __end); }
-
- // NB: This is the special case for Input Iterators, used in
- // istreambuf_iterators, etc.
- // Input Iterators have a cost structure very different from
- // pointers, calling for a different coding style.
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InIterator>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_construct(_InIterator __beg, _InIterator __end,
- std::input_iterator_tag)
- {
- size_type __len = 0;
- size_type __capacity = size_type(_S_local_capacity);
-
- while (__beg != __end && __len < __capacity)
- {
- _M_data()[__len++] = *__beg;
- ++__beg;
- }
-
- __try
- {
- while (__beg != __end)
- {
- if (__len == __capacity)
- {
- // Allocate more space.
- __capacity = __len + 1;
- _CharT* __another = _M_create(__capacity, __len);
- this->_S_copy(__another, _M_data(), __len);
- _M_dispose();
- _M_data(__another);
- _M_capacity(__capacity);
- }
- _M_data()[__len++] = *__beg;
- ++__beg;
- }
- }
- __catch(...)
- {
- _M_dispose();
- __throw_exception_again;
- }
-
- _M_set_length_no_wipe(__len);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- template<typename _InIterator>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_construct(_InIterator __beg, _InIterator __end,
- std::forward_iterator_tag)
- {
- // NB: Not required, but considered best practice.
- if (__builtin_expect(__is_null_pointer(__beg) && __beg != __end, 0))
- std::__throw_logic_error(__N("__sso_string_base::"
- "_M_construct NULL not valid"));
-
- size_type __dnew = static_cast<size_type>(std::distance(__beg, __end));
-
- if (__dnew > size_type(_S_local_capacity))
- {
- _M_data(_M_create(__dnew, size_type(0)));
- _M_capacity(__dnew);
- }
-
- // Check for out_of_range and length_error exceptions.
- __try
- { this->_S_copy_chars(_M_data(), __beg, __end); }
- __catch(...)
- {
- _M_dispose();
- __throw_exception_again;
- }
-
- _M_set_length_no_wipe(__dnew);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_construct(size_type __n, _CharT __c)
- {
- if (__n > size_type(_S_local_capacity))
- {
- _M_data(_M_create(__n, size_type(0)));
- _M_capacity(__n);
- }
-
- if (__n)
- this->_S_assign(_M_data(), __n, __c);
-
- _M_set_length_no_wipe(__n);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_assign(const __sso_string_base& __rcs)
- {
- if (this != &__rcs)
- {
- const size_type __rsize = __rcs._M_length();
- const size_type __capacity = _M_capacity();
-
- if (__rsize > __capacity)
- {
- size_type __new_capacity = __rsize;
- _CharT* __tmp = _M_create(__new_capacity, __capacity);
- _M_dispose();
- _M_data(__tmp);
- _M_capacity(__new_capacity);
- }
-
- if (__rsize)
- this->_S_copy(_M_data(), __rcs._M_data(), __rsize);
-
- _M_set_length(__rsize);
- }
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_reserve(size_type __res)
- {
- // Make sure we don't shrink below the current size.
- if (__res < _M_length())
- __res = _M_length();
-
- const size_type __capacity = _M_capacity();
- if (__res != __capacity)
- {
- if (__res > __capacity
- || __res > size_type(_S_local_capacity))
- {
- _CharT* __tmp = _M_create(__res, __capacity);
- this->_S_copy(__tmp, _M_data(), _M_length() + 1);
- _M_dispose();
- _M_data(__tmp);
- _M_capacity(__res);
- }
- else if (!_M_is_local())
- {
- this->_S_copy(_M_local_data, _M_data(), _M_length() + 1);
- _M_destroy(__capacity);
- _M_data(_M_local_data);
- }
- }
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_mutate(size_type __pos, size_type __len1, const _CharT* __s,
- const size_type __len2)
- {
- const size_type __how_much = _M_length() - __pos - __len1;
-
- size_type __new_capacity = _M_length() + __len2 - __len1;
- _CharT* __r = _M_create(__new_capacity, _M_capacity());
-
- if (__pos)
- this->_S_copy(__r, _M_data(), __pos);
- if (__s && __len2)
- this->_S_copy(__r + __pos, __s, __len2);
- if (__how_much)
- this->_S_copy(__r + __pos + __len2,
- _M_data() + __pos + __len1, __how_much);
-
- _M_dispose();
- _M_data(__r);
- _M_capacity(__new_capacity);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- void
- __sso_string_base<_CharT, _Traits, _Alloc>::
- _M_erase(size_type __pos, size_type __n)
- {
- const size_type __how_much = _M_length() - __pos - __n;
-
- if (__how_much && __n)
- this->_S_move(_M_data() + __pos, _M_data() + __pos + __n,
- __how_much);
-
- _M_set_length(_M_length() - __n);
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _SSO_STRING_BASE_H */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/stdio_filebuf.h b/gcc-4.4.3/libstdc++-v3/include/ext/stdio_filebuf.h
deleted file mode 100644
index 6efe4ea12..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/stdio_filebuf.h
+++ /dev/null
@@ -1,157 +0,0 @@
-// File descriptor layer for filebuf -*- C++ -*-
-
-// Copyright (C) 2002, 2003, 2004, 2005, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/stdio_filebuf.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _STDIO_FILEBUF_H
-#define _STDIO_FILEBUF_H 1
-
-#pragma GCC system_header
-
-#include <fstream>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /**
- * @brief Provides a layer of compatibility for C/POSIX.
- *
- * This GNU extension provides extensions for working with standard C
- * FILE*'s and POSIX file descriptors. It must be instantiated by the
- * user with the type of character used in the file stream, e.g.,
- * stdio_filebuf<char>.
- */
- template<typename _CharT, typename _Traits = std::char_traits<_CharT> >
- class stdio_filebuf : public std::basic_filebuf<_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;
- typedef std::size_t size_t;
-
- public:
- /**
- * deferred initialization
- */
- stdio_filebuf() : std::basic_filebuf<_CharT, _Traits>() {}
-
- /**
- * @param fd An open file descriptor.
- * @param mode Same meaning as in a standard filebuf.
- * @param size Optimal or preferred size of internal buffer, in chars.
- *
- * This constructor associates a file stream buffer with an open
- * POSIX file descriptor. The file descriptor will be automatically
- * closed when the stdio_filebuf is closed/destroyed.
- */
- stdio_filebuf(int __fd, std::ios_base::openmode __mode,
- size_t __size = static_cast<size_t>(BUFSIZ));
-
- /**
- * @param f An open @c FILE*.
- * @param mode Same meaning as in a standard filebuf.
- * @param size Optimal or preferred size of internal buffer, in chars.
- * Defaults to system's @c BUFSIZ.
- *
- * This constructor associates a file stream buffer with an open
- * C @c FILE*. The @c FILE* will not be automatically closed when the
- * stdio_filebuf is closed/destroyed.
- */
- stdio_filebuf(std::__c_file* __f, std::ios_base::openmode __mode,
- size_t __size = static_cast<size_t>(BUFSIZ));
-
- /**
- * Closes the external data stream if the file descriptor constructor
- * was used.
- */
- virtual
- ~stdio_filebuf();
-
- /**
- * @return The underlying file descriptor.
- *
- * Once associated with an external data stream, this function can be
- * used to access the underlying POSIX file descriptor. Note that
- * there is no way for the library to track what you do with the
- * descriptor, so be careful.
- */
- int
- fd() { return this->_M_file.fd(); }
-
- /**
- * @return The underlying FILE*.
- *
- * This function can be used to access the underlying "C" file pointer.
- * Note that there is no way for the library to track what you do
- * with the file, so be careful.
- */
- std::__c_file*
- file() { return this->_M_file.file(); }
- };
-
- template<typename _CharT, typename _Traits>
- stdio_filebuf<_CharT, _Traits>::~stdio_filebuf()
- { }
-
- template<typename _CharT, typename _Traits>
- stdio_filebuf<_CharT, _Traits>::
- stdio_filebuf(int __fd, std::ios_base::openmode __mode, size_t __size)
- {
- this->_M_file.sys_open(__fd, __mode);
- if (this->is_open())
- {
- this->_M_mode = __mode;
- this->_M_buf_size = __size;
- this->_M_allocate_internal_buffer();
- this->_M_reading = false;
- this->_M_writing = false;
- this->_M_set_buffer(-1);
- }
- }
-
- template<typename _CharT, typename _Traits>
- stdio_filebuf<_CharT, _Traits>::
- stdio_filebuf(std::__c_file* __f, std::ios_base::openmode __mode,
- size_t __size)
- {
- this->_M_file.sys_open(__f, __mode);
- if (this->is_open())
- {
- this->_M_mode = __mode;
- this->_M_buf_size = __size;
- this->_M_allocate_internal_buffer();
- this->_M_reading = false;
- this->_M_writing = false;
- this->_M_set_buffer(-1);
- }
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/stdio_sync_filebuf.h b/gcc-4.4.3/libstdc++-v3/include/ext/stdio_sync_filebuf.h
deleted file mode 100644
index 9407e96e1..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/stdio_sync_filebuf.h
+++ /dev/null
@@ -1,279 +0,0 @@
-// Iostreams wrapper for stdio FILE* -*- C++ -*-
-
-// Copyright (C) 2003, 2004, 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/stdio_sync_filebuf.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _STDIO_SYNC_FILEBUF_H
-#define _STDIO_SYNC_FILEBUF_H 1
-
-#pragma GCC system_header
-
-#include <streambuf>
-#include <unistd.h>
-#include <cstdio>
-#include <bits/c++io.h> // For __c_file
-
-#ifdef _GLIBCXX_USE_WCHAR_T
-#include <cwchar>
-#endif
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /// class stdio_sync_filebuf.
- template<typename _CharT, typename _Traits = std::char_traits<_CharT> >
- class stdio_sync_filebuf : public std::basic_streambuf<_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;
-
- private:
- // Underlying stdio FILE
- std::__c_file* const _M_file;
-
- // Last character gotten. This is used when pbackfail is
- // called from basic_streambuf::sungetc()
- int_type _M_unget_buf;
-
- public:
- explicit
- stdio_sync_filebuf(std::__c_file* __f)
- : _M_file(__f), _M_unget_buf(traits_type::eof())
- { }
-
- /**
- * @return The underlying FILE*.
- *
- * This function can be used to access the underlying "C" file pointer.
- * Note that there is no way for the library to track what you do
- * with the file, so be careful.
- */
- std::__c_file* const
- file() { return this->_M_file; }
-
- protected:
- int_type
- syncgetc();
-
- int_type
- syncungetc(int_type __c);
-
- int_type
- syncputc(int_type __c);
-
- virtual int_type
- underflow()
- {
- int_type __c = this->syncgetc();
- return this->syncungetc(__c);
- }
-
- virtual int_type
- uflow()
- {
- // Store the gotten character in case we need to unget it.
- _M_unget_buf = this->syncgetc();
- return _M_unget_buf;
- }
-
- virtual int_type
- pbackfail(int_type __c = traits_type::eof())
- {
- int_type __ret;
- const int_type __eof = traits_type::eof();
-
- // Check if the unget or putback was requested
- if (traits_type::eq_int_type(__c, __eof)) // unget
- {
- if (!traits_type::eq_int_type(_M_unget_buf, __eof))
- __ret = this->syncungetc(_M_unget_buf);
- else // buffer invalid, fail.
- __ret = __eof;
- }
- else // putback
- __ret = this->syncungetc(__c);
-
- // The buffered character is no longer valid, discard it.
- _M_unget_buf = __eof;
- return __ret;
- }
-
- virtual std::streamsize
- xsgetn(char_type* __s, std::streamsize __n);
-
- virtual int_type
- overflow(int_type __c = traits_type::eof())
- {
- int_type __ret;
- if (traits_type::eq_int_type(__c, traits_type::eof()))
- {
- if (std::fflush(_M_file))
- __ret = traits_type::eof();
- else
- __ret = traits_type::not_eof(__c);
- }
- else
- __ret = this->syncputc(__c);
- return __ret;
- }
-
- virtual std::streamsize
- xsputn(const char_type* __s, std::streamsize __n);
-
- virtual int
- sync()
- { return std::fflush(_M_file); }
-
- virtual std::streampos
- seekoff(std::streamoff __off, std::ios_base::seekdir __dir,
- std::ios_base::openmode = std::ios_base::in | std::ios_base::out)
- {
- std::streampos __ret(std::streamoff(-1));
- int __whence;
- if (__dir == std::ios_base::beg)
- __whence = SEEK_SET;
- else if (__dir == std::ios_base::cur)
- __whence = SEEK_CUR;
- else
- __whence = SEEK_END;
-#ifdef _GLIBCXX_USE_LFS
- if (!fseeko64(_M_file, __off, __whence))
- __ret = std::streampos(ftello64(_M_file));
-#else
- if (!fseek(_M_file, __off, __whence))
- __ret = std::streampos(std::ftell(_M_file));
-#endif
- return __ret;
- }
-
- virtual std::streampos
- seekpos(std::streampos __pos,
- std::ios_base::openmode __mode =
- std::ios_base::in | std::ios_base::out)
- { return seekoff(std::streamoff(__pos), std::ios_base::beg, __mode); }
- };
-
- template<>
- inline stdio_sync_filebuf<char>::int_type
- stdio_sync_filebuf<char>::syncgetc()
- { return std::getc(_M_file); }
-
- template<>
- inline stdio_sync_filebuf<char>::int_type
- stdio_sync_filebuf<char>::syncungetc(int_type __c)
- { return std::ungetc(__c, _M_file); }
-
- template<>
- inline stdio_sync_filebuf<char>::int_type
- stdio_sync_filebuf<char>::syncputc(int_type __c)
- { return std::putc(__c, _M_file); }
-
- template<>
- inline std::streamsize
- stdio_sync_filebuf<char>::xsgetn(char* __s, std::streamsize __n)
- {
- std::streamsize __ret = std::fread(__s, 1, __n, _M_file);
- if (__ret > 0)
- _M_unget_buf = traits_type::to_int_type(__s[__ret - 1]);
- else
- _M_unget_buf = traits_type::eof();
- return __ret;
- }
-
- template<>
- inline std::streamsize
- stdio_sync_filebuf<char>::xsputn(const char* __s, std::streamsize __n)
- { return std::fwrite(__s, 1, __n, _M_file); }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- template<>
- inline stdio_sync_filebuf<wchar_t>::int_type
- stdio_sync_filebuf<wchar_t>::syncgetc()
- { return std::getwc(_M_file); }
-
- template<>
- inline stdio_sync_filebuf<wchar_t>::int_type
- stdio_sync_filebuf<wchar_t>::syncungetc(int_type __c)
- { return std::ungetwc(__c, _M_file); }
-
- template<>
- inline stdio_sync_filebuf<wchar_t>::int_type
- stdio_sync_filebuf<wchar_t>::syncputc(int_type __c)
- { return std::putwc(__c, _M_file); }
-
- template<>
- inline std::streamsize
- stdio_sync_filebuf<wchar_t>::xsgetn(wchar_t* __s, std::streamsize __n)
- {
- std::streamsize __ret = 0;
- const int_type __eof = traits_type::eof();
- while (__n--)
- {
- int_type __c = this->syncgetc();
- if (traits_type::eq_int_type(__c, __eof))
- break;
- __s[__ret] = traits_type::to_char_type(__c);
- ++__ret;
- }
-
- if (__ret > 0)
- _M_unget_buf = traits_type::to_int_type(__s[__ret - 1]);
- else
- _M_unget_buf = traits_type::eof();
- return __ret;
- }
-
- template<>
- inline std::streamsize
- stdio_sync_filebuf<wchar_t>::xsputn(const wchar_t* __s,
- std::streamsize __n)
- {
- std::streamsize __ret = 0;
- const int_type __eof = traits_type::eof();
- while (__n--)
- {
- if (traits_type::eq_int_type(this->syncputc(*__s++), __eof))
- break;
- ++__ret;
- }
- return __ret;
- }
-#endif
-
-#if _GLIBCXX_EXTERN_TEMPLATE
- extern template class stdio_sync_filebuf<char>;
-#ifdef _GLIBCXX_USE_WCHAR_T
- extern template class stdio_sync_filebuf<wchar_t>;
-#endif
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/string_conversions.h b/gcc-4.4.3/libstdc++-v3/include/ext/string_conversions.h
deleted file mode 100644
index 36c19e0a9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/string_conversions.h
+++ /dev/null
@@ -1,94 +0,0 @@
-// String Conversions -*- C++ -*-
-
-// Copyright (C) 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-#ifndef _STRING_CONVERSIONS_H
-#define _STRING_CONVERSIONS_H 1
-
-#pragma GCC system_header
-
-#include <ext/numeric_traits.h>
-#include <bits/functexcept.h>
-#include <cstddef>
-#include <cstdlib>
-#include <cwchar>
-#include <cstdio>
-#include <cerrno>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Helper for all the sto* functions.
- template<typename _TRet, typename _Ret = _TRet, typename _CharT,
- typename... _Base>
- _Ret
- __stoa(_TRet (*__convf) (const _CharT*, _CharT**, _Base...),
- const char* __name, const _CharT* __str, std::size_t* __idx,
- _Base... __base)
- {
- _Ret __ret;
-
- _CharT* __endptr;
- errno = 0;
- const _TRet __tmp = __convf(__str, &__endptr, __base...);
-
- if (__endptr == __str)
- std::__throw_invalid_argument(__name);
- else if (errno == ERANGE
- || (std::__are_same<_Ret, int>::__value
- && (__tmp < __numeric_traits<int>::__min
- || __tmp > __numeric_traits<int>::__max)))
- std::__throw_out_of_range(__name);
- else
- __ret = __tmp;
-
- if (__idx)
- *__idx = __endptr - __str;
-
- return __ret;
- }
-
- // Helper for the to_string / to_wstring functions.
- template<typename _String, typename _CharT = typename _String::value_type>
- _String
- __to_xstring(int (*__convf) (_CharT*, std::size_t, const _CharT*,
- __builtin_va_list), std::size_t __n,
- const _CharT* __fmt, ...)
- {
- // XXX Eventually the result will be constructed in place in
- // the C++0x string, likely with the help of internal hooks.
- _CharT* __s = static_cast<_CharT*>(__builtin_alloca(sizeof(_CharT)
- * __n));
-
- __builtin_va_list __args;
- __builtin_va_start(__args, __fmt);
-
- const int __len = __convf(__s, __n, __fmt, __args);
-
- __builtin_va_end(__args);
-
- return _String(__s, __s + __len);
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif // _STRING_CONVERSIONS_H
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/throw_allocator.h b/gcc-4.4.3/libstdc++-v3/include/ext/throw_allocator.h
deleted file mode 100644
index c87408fd9..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/throw_allocator.h
+++ /dev/null
@@ -1,448 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice
-// and this permission notice appear in supporting documentation. None
-// of the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied
-// warranty.
-
-/** @file ext/throw_allocator.h
- * This file is a GNU extension to the Standard C++ Library.
- *
- * Contains an exception-throwing allocator, useful for testing
- * exception safety. In addition, allocation addresses are stored and
- * sanity checked.
- */
-
-#ifndef _THROW_ALLOCATOR_H
-#define _THROW_ALLOCATOR_H 1
-
-#include <cmath>
-#include <ctime>
-#include <map>
-#include <set>
-#include <string>
-#include <ostream>
-#include <stdexcept>
-#include <utility>
-#include <tr1/random>
-#include <bits/functexcept.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- class twister_rand_gen
- {
- private:
- std::tr1::mt19937 _M_generator;
-
- public:
- twister_rand_gen(unsigned int s = static_cast<unsigned int>(std::time(0)));
-
- void
- init(unsigned int);
-
- double
- get_prob();
- };
-
- /**
- * @brief Thown by throw_allocator.
- * @ingroup exceptions
- */
- struct forced_exception_error : public std::exception
- { };
-
- // Substitute for concurrence_error object in the case of -fno-exceptions.
- inline void
- __throw_forced_exception_error()
- {
-#if __EXCEPTIONS
- throw forced_exception_error();
-#else
- __builtin_abort();
-#endif
- }
-
- /// Base class.
- class throw_allocator_base
- {
- public:
- void
- init(unsigned long seed);
-
- static void
- set_throw_prob(double throw_prob);
-
- static double
- get_throw_prob();
-
- static void
- set_label(size_t l);
-
- static bool
- empty();
-
- struct group_throw_prob_adjustor
- {
- group_throw_prob_adjustor(size_t size) : _M_throw_prob_orig(_S_throw_prob)
- {
- _S_throw_prob =
- 1 - std::pow(double(1 - _S_throw_prob), double(0.5 / (size + 1)));
- }
-
- ~group_throw_prob_adjustor()
- { _S_throw_prob = _M_throw_prob_orig; }
-
- private:
- const double _M_throw_prob_orig;
- };
-
- struct zero_throw_prob_adjustor
- {
- zero_throw_prob_adjustor() : _M_throw_prob_orig(_S_throw_prob)
- { _S_throw_prob = 0; }
-
- ~zero_throw_prob_adjustor()
- { _S_throw_prob = _M_throw_prob_orig; }
-
- private:
- const double _M_throw_prob_orig;
- };
-
- protected:
- static void
- insert(void*, size_t);
-
- static void
- erase(void*, size_t);
-
- static void
- throw_conditionally();
-
- // See if a particular address and size has been allocated by this
- // allocator.
- static void
- check_allocated(void*, size_t);
-
- // See if a given label has been allocated by this allocator.
- static void
- check_allocated(size_t);
-
- private:
- typedef std::pair<size_t, size_t> alloc_data_type;
- typedef std::map<void*, alloc_data_type> map_type;
- typedef map_type::value_type entry_type;
- typedef map_type::const_iterator const_iterator;
- typedef map_type::const_reference const_reference;
-
- friend std::ostream&
- operator<<(std::ostream&, const throw_allocator_base&);
-
- static entry_type
- make_entry(void*, size_t);
-
- static void
- print_to_string(std::string&);
-
- static void
- print_to_string(std::string&, const_reference);
-
- static twister_rand_gen _S_g;
- static map_type _S_map;
- static double _S_throw_prob;
- static size_t _S_label;
- };
-
- /**
- * @brief Allocator class with logging and exception control.
- * @ingroup allocators
- */
- template<typename T>
- class throw_allocator : public throw_allocator_base
- {
- public:
- typedef size_t size_type;
- typedef ptrdiff_t difference_type;
- typedef T value_type;
- typedef value_type* pointer;
- typedef const value_type* const_pointer;
- typedef value_type& reference;
- typedef const value_type& const_reference;
-
-
- template<typename U>
- struct rebind
- {
- typedef throw_allocator<U> other;
- };
-
- throw_allocator() throw() { }
-
- throw_allocator(const throw_allocator&) throw() { }
-
- template<typename U>
- throw_allocator(const throw_allocator<U>&) throw() { }
-
- ~throw_allocator() throw() { }
-
- size_type
- max_size() const throw()
- { return std::allocator<value_type>().max_size(); }
-
- pointer
- allocate(size_type __n, std::allocator<void>::const_pointer hint = 0)
- {
- if (__builtin_expect(__n > this->max_size(), false))
- std::__throw_bad_alloc();
-
- throw_conditionally();
- value_type* const a = std::allocator<value_type>().allocate(__n, hint);
- insert(a, sizeof(value_type) * __n);
- return a;
- }
-
- void
- construct(pointer __p, const T& val)
- { return std::allocator<value_type>().construct(__p, val); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename... _Args>
- void
- construct(pointer __p, _Args&&... __args)
- {
- return std::allocator<value_type>().
- construct(__p, std::forward<_Args>(__args)...);
- }
-#endif
-
- void
- destroy(pointer __p)
- { std::allocator<value_type>().destroy(__p); }
-
- void
- deallocate(pointer __p, size_type __n)
- {
- erase(__p, sizeof(value_type) * __n);
- std::allocator<value_type>().deallocate(__p, __n);
- }
-
- void
- check_allocated(pointer __p, size_type __n)
- { throw_allocator_base::check_allocated(__p, sizeof(value_type) * __n); }
-
- void
- check_allocated(size_type label)
- { throw_allocator_base::check_allocated(label); }
- };
-
- template<typename T>
- inline bool
- operator==(const throw_allocator<T>&, const throw_allocator<T>&)
- { return true; }
-
- template<typename T>
- inline bool
- operator!=(const throw_allocator<T>&, const throw_allocator<T>&)
- { return false; }
-
- std::ostream&
- operator<<(std::ostream& os, const throw_allocator_base& alloc)
- {
- std::string error;
- throw_allocator_base::print_to_string(error);
- os << error;
- return os;
- }
-
- // XXX Should be in .cc.
- twister_rand_gen::
- twister_rand_gen(unsigned int seed) : _M_generator(seed) { }
-
- void
- twister_rand_gen::
- init(unsigned int seed)
- { _M_generator.seed(seed); }
-
- double
- twister_rand_gen::
- get_prob()
- {
- const double min = _M_generator.min();
- const double res = static_cast<const double>(_M_generator() - min);
- const double range = static_cast<const double>(_M_generator.max() - min);
- const double ret = res / range;
- _GLIBCXX_DEBUG_ASSERT(ret >= 0 && ret <= 1);
- return ret;
- }
-
- twister_rand_gen throw_allocator_base::_S_g;
-
- throw_allocator_base::map_type
- throw_allocator_base::_S_map;
-
- double throw_allocator_base::_S_throw_prob;
-
- size_t throw_allocator_base::_S_label = 0;
-
- throw_allocator_base::entry_type
- throw_allocator_base::make_entry(void* p, size_t size)
- { return std::make_pair(p, alloc_data_type(_S_label, size)); }
-
- void
- throw_allocator_base::init(unsigned long seed)
- { _S_g.init(seed); }
-
- void
- throw_allocator_base::set_throw_prob(double throw_prob)
- { _S_throw_prob = throw_prob; }
-
- double
- throw_allocator_base::get_throw_prob()
- { return _S_throw_prob; }
-
- void
- throw_allocator_base::set_label(size_t l)
- { _S_label = l; }
-
- void
- throw_allocator_base::insert(void* p, size_t size)
- {
- const_iterator found_it = _S_map.find(p);
- if (found_it != _S_map.end())
- {
- std::string error("throw_allocator_base::insert");
- error += "double insert!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- print_to_string(error, *found_it);
- std::__throw_logic_error(error.c_str());
- }
- _S_map.insert(make_entry(p, size));
- }
-
- bool
- throw_allocator_base::empty()
- { return _S_map.empty(); }
-
- void
- throw_allocator_base::erase(void* p, size_t size)
- {
- check_allocated(p, size);
- _S_map.erase(p);
- }
-
- void
- throw_allocator_base::check_allocated(void* p, size_t size)
- {
- const_iterator found_it = _S_map.find(p);
- if (found_it == _S_map.end())
- {
- std::string error("throw_allocator_base::check_allocated by value ");
- error += "null erase!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- std::__throw_logic_error(error.c_str());
- }
-
- if (found_it->second.second != size)
- {
- std::string error("throw_allocator_base::check_allocated by value ");
- error += "wrong-size erase!";
- error += '\n';
- print_to_string(error, make_entry(p, size));
- print_to_string(error, *found_it);
- std::__throw_logic_error(error.c_str());
- }
- }
-
- void
- throw_allocator_base::check_allocated(size_t label)
- {
- std::string found;
- const_iterator it = _S_map.begin();
- while (it != _S_map.end())
- {
- if (it->second.first == label)
- {
- print_to_string(found, *it);
- }
- ++it;
- }
-
- if (!found.empty())
- {
- std::string error("throw_allocator_base::check_allocated by label ");
- error += '\n';
- error += found;
- std::__throw_logic_error(error.c_str());
- }
- }
-
- void
- throw_allocator_base::throw_conditionally()
- {
- if (_S_g.get_prob() < _S_throw_prob)
- __throw_forced_exception_error();
- }
-
- void
- throw_allocator_base::print_to_string(std::string& s)
- {
- const_iterator begin = throw_allocator_base::_S_map.begin();
- const_iterator end = throw_allocator_base::_S_map.end();
- for (; begin != end; ++begin)
- print_to_string(s, *begin);
- }
-
- void
- throw_allocator_base::print_to_string(std::string& s, const_reference ref)
- {
- char buf[40];
- const char tab('\t');
- s += "address: ";
- __builtin_sprintf(buf, "%p", ref.first);
- s += buf;
- s += tab;
- s += "label: ";
- unsigned long l = static_cast<unsigned long>(ref.second.first);
- __builtin_sprintf(buf, "%lu", l);
- s += buf;
- s += tab;
- s += "size: ";
- l = static_cast<unsigned long>(ref.second.second);
- __builtin_sprintf(buf, "%lu", l);
- s += buf;
- s += '\n';
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/type_traits.h b/gcc-4.4.3/libstdc++-v3/include/ext/type_traits.h
deleted file mode 100644
index b24ce4e5b..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/type_traits.h
+++ /dev/null
@@ -1,204 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the terms
-// of the GNU General Public License as published by the Free Software
-// Foundation; either version 3, or (at your option) any later
-// version.
-
-// This library is distributed in the hope that it will be useful, but
-// WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-// General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/type_traits.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _EXT_TYPE_TRAITS
-#define _EXT_TYPE_TRAITS 1
-
-#pragma GCC system_header
-
-#include <bits/c++config.h>
-#include <bits/cpp_type_traits.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // Define a nested type if some predicate holds.
- template<bool, typename>
- struct __enable_if
- { };
-
- template<typename _Tp>
- struct __enable_if<true, _Tp>
- { typedef _Tp __type; };
-
-
- // Conditional expression for types. If true, first, if false, second.
- template<bool _Cond, typename _Iftrue, typename _Iffalse>
- struct __conditional_type
- { typedef _Iftrue __type; };
-
- template<typename _Iftrue, typename _Iffalse>
- struct __conditional_type<false, _Iftrue, _Iffalse>
- { typedef _Iffalse __type; };
-
-
- // Given an integral builtin type, return the corresponding unsigned type.
- template<typename _Tp>
- struct __add_unsigned
- {
- private:
- typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
-
- public:
- typedef typename __if_type::__type __type;
- };
-
- template<>
- struct __add_unsigned<char>
- { typedef unsigned char __type; };
-
- template<>
- struct __add_unsigned<signed char>
- { typedef unsigned char __type; };
-
- template<>
- struct __add_unsigned<short>
- { typedef unsigned short __type; };
-
- template<>
- struct __add_unsigned<int>
- { typedef unsigned int __type; };
-
- template<>
- struct __add_unsigned<long>
- { typedef unsigned long __type; };
-
- template<>
- struct __add_unsigned<long long>
- { typedef unsigned long long __type; };
-
- // Declare but don't define.
- template<>
- struct __add_unsigned<bool>;
-
- template<>
- struct __add_unsigned<wchar_t>;
-
-
- // Given an integral builtin type, return the corresponding signed type.
- template<typename _Tp>
- struct __remove_unsigned
- {
- private:
- typedef __enable_if<std::__is_integer<_Tp>::__value, _Tp> __if_type;
-
- public:
- typedef typename __if_type::__type __type;
- };
-
- template<>
- struct __remove_unsigned<char>
- { typedef signed char __type; };
-
- template<>
- struct __remove_unsigned<unsigned char>
- { typedef signed char __type; };
-
- template<>
- struct __remove_unsigned<unsigned short>
- { typedef short __type; };
-
- template<>
- struct __remove_unsigned<unsigned int>
- { typedef int __type; };
-
- template<>
- struct __remove_unsigned<unsigned long>
- { typedef long __type; };
-
- template<>
- struct __remove_unsigned<unsigned long long>
- { typedef long long __type; };
-
- // Declare but don't define.
- template<>
- struct __remove_unsigned<bool>;
-
- template<>
- struct __remove_unsigned<wchar_t>;
-
-
- // For use in string and vstring.
- template<typename _Type>
- inline bool
- __is_null_pointer(_Type* __ptr)
- { return __ptr == 0; }
-
- template<typename _Type>
- inline bool
- __is_null_pointer(_Type)
- { return false; }
-
-
- // For complex and cmath
- template<typename _Tp, bool = std::__is_integer<_Tp>::__value>
- struct __promote
- { typedef double __type; };
-
- template<typename _Tp>
- struct __promote<_Tp, false>
- { typedef _Tp __type; };
-
- template<typename _Tp, typename _Up>
- struct __promote_2
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
-
- public:
- typedef __typeof__(__type1() + __type2()) __type;
- };
-
- template<typename _Tp, typename _Up, typename _Vp>
- struct __promote_3
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
-
- public:
- typedef __typeof__(__type1() + __type2() + __type3()) __type;
- };
-
- template<typename _Tp, typename _Up, typename _Vp, typename _Wp>
- struct __promote_4
- {
- private:
- typedef typename __promote<_Tp>::__type __type1;
- typedef typename __promote<_Up>::__type __type2;
- typedef typename __promote<_Vp>::__type __type3;
- typedef typename __promote<_Wp>::__type __type4;
-
- public:
- typedef __typeof__(__type1() + __type2() + __type3() + __type4()) __type;
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/typelist.h b/gcc-4.4.3/libstdc++-v3/include/ext/typelist.h
deleted file mode 100644
index ff1cac7ee..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/typelist.h
+++ /dev/null
@@ -1,544 +0,0 @@
-// -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL.
-
-// Permission to use, copy, modify, sell, and distribute this software
-// is hereby granted without fee, provided that the above copyright
-// notice appears in all copies, and that both that copyright notice and
-// this permission notice appear in supporting documentation. None of
-// the above authors, nor IBM Haifa Research Laboratories, make any
-// representation about the suitability of this software for any
-// purpose. It is provided "as is" without express or implied warranty.
-
-/**
- * @file typelist.h
- * Contains typelist_chain definitions.
- * Typelists are an idea by Andrei Alexandrescu.
- */
-
-#ifndef _TYPELIST_H
-#define _TYPELIST_H 1
-
-#include <ext/type_traits.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
-/** @namespace __gnu_cxx::typelist
- * @brief GNU typelist extensions for public compile-time use.
-*/
-namespace typelist
-{
- struct null_type { };
-
- template<typename Root>
- struct node
- {
- typedef Root root;
- };
-
- // Forward declarations of functors.
- template<typename Hd, typename Typelist>
- struct chain
- {
- typedef Hd head;
- typedef Typelist tail;
- };
-
- // Apply all typelist types to unary functor.
- template<typename Fn, typename Typelist>
- void
- apply(Fn&, Typelist);
-
- /// Apply all typelist types to generator functor.
- template<typename Gn, typename Typelist>
- void
- apply_generator(Gn&, Typelist);
-
- // Apply all typelist types and values to generator functor.
- template<typename Gn, typename TypelistT, typename TypelistV>
- void
- apply_generator(Gn&, TypelistT, TypelistV);
-
- template<typename Typelist0, typename Typelist1>
- struct append;
-
- template<typename Typelist_Typelist>
- struct append_typelist;
-
- template<typename Typelist, typename T>
- struct contains;
-
- template<typename Typelist, template<typename T> class Pred>
- struct filter;
-
- template<typename Typelist, int i>
- struct at_index;
-
- template<typename Typelist, template<typename T> class Transform>
- struct transform;
-
- template<typename Typelist_Typelist>
- struct flatten;
-
- template<typename Typelist>
- struct from_first;
-
- template<typename T1>
- struct create1;
-
- template<typename T1, typename T2>
- struct create2;
-
- template<typename T1, typename T2, typename T3>
- struct create3;
-
- template<typename T1, typename T2, typename T3, typename T4>
- struct create4;
-
- template<typename T1, typename T2, typename T3, typename T4, typename T5>
- struct create5;
-
- template<typename T1, typename T2, typename T3,
- typename T4, typename T5, typename T6>
- struct create6;
-} // namespace typelist
-
-_GLIBCXX_END_NAMESPACE
-
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
-namespace typelist
-{
-namespace detail
-{
- template<typename Fn, typename Typelist_Chain>
- struct apply_;
-
- template<typename Fn, typename Hd, typename Tl>
- struct apply_<Fn, chain<Hd, Tl> >
- {
- void
- operator()(Fn& f)
- {
- f.operator()(Hd());
- apply_<Fn, Tl> next;
- next(f);
- }
- };
-
- template<typename Fn>
- struct apply_<Fn, null_type>
- {
- void
- operator()(Fn&) { }
- };
-
- template<typename Gn, typename Typelist_Chain>
- struct apply_generator1_;
-
- template<typename Gn, typename Hd, typename Tl>
- struct apply_generator1_<Gn, chain<Hd, Tl> >
- {
- void
- operator()(Gn& g)
- {
- g.template operator()<Hd>();
- apply_generator1_<Gn, Tl> next;
- next(g);
- }
- };
-
- template<typename Gn>
- struct apply_generator1_<Gn, null_type>
- {
- void
- operator()(Gn&) { }
- };
-
- template<typename Gn, typename TypelistT_Chain, typename TypelistV_Chain>
- struct apply_generator2_;
-
- template<typename Gn, typename Hd1, typename TlT, typename Hd2, typename TlV>
- struct apply_generator2_<Gn, chain<Hd1, TlT>, chain<Hd2, TlV> >
- {
- void
- operator()(Gn& g)
- {
- g.template operator()<Hd1, Hd2>();
- apply_generator2_<Gn, TlT, TlV> next;
- next(g);
- }
- };
-
- template<typename Gn>
- struct apply_generator2_<Gn, null_type, null_type>
- {
- void
- operator()(Gn&) { }
- };
-
- template<typename Typelist_Chain0, typename Typelist_Chain1>
- struct append_;
-
- template<typename Hd, typename Tl, typename Typelist_Chain>
- struct append_<chain<Hd, Tl>, Typelist_Chain>
- {
- private:
- typedef append_<Tl, Typelist_Chain> append_type;
-
- public:
- typedef chain<Hd, typename append_type::type> type;
- };
-
- template<typename Typelist_Chain>
- struct append_<null_type, Typelist_Chain>
- {
- typedef Typelist_Chain type;
- };
-
- template<typename Typelist_Chain>
- struct append_<Typelist_Chain, null_type>
- {
- typedef Typelist_Chain type;
- };
-
- template<>
- struct append_<null_type, null_type>
- {
- typedef null_type type;
- };
-
- template<typename Typelist_Typelist_Chain>
- struct append_typelist_;
-
- template<typename Hd>
- struct append_typelist_<chain<Hd, null_type> >
- {
- typedef chain<Hd, null_type> type;
- };
-
- template<typename Hd, typename Tl>
- struct append_typelist_<chain< Hd, Tl> >
- {
- private:
- typedef typename append_typelist_<Tl>::type rest_type;
-
- public:
- typedef typename append<Hd, node<rest_type> >::type::root type;
- };
-
- template<typename Typelist_Chain, typename T>
- struct contains_;
-
- template<typename T>
- struct contains_<null_type, T>
- {
- enum
- {
- value = false
- };
- };
-
- template<typename Hd, typename Tl, typename T>
- struct contains_<chain<Hd, Tl>, T>
- {
- enum
- {
- value = contains_<Tl, T>::value
- };
- };
-
- template<typename Tl, typename T>
- struct contains_<chain<T, Tl>, T>
- {
- enum
- {
- value = true
- };
- };
-
- template<typename Typelist_Chain, template<typename T> class Pred>
- struct chain_filter_;
-
- template<template<typename T> class Pred>
- struct chain_filter_<null_type, Pred>
- {
- typedef null_type type;
- };
-
- template<typename Hd, typename Tl, template<typename T> class Pred>
- struct chain_filter_<chain<Hd, Tl>, Pred>
- {
- private:
- enum
- {
- include_hd = Pred<Hd>::value
- };
-
- typedef typename chain_filter_<Tl, Pred>::type rest_type;
- typedef chain<Hd, rest_type> chain_type;
-
- public:
- typedef typename __conditional_type<include_hd, chain_type, rest_type>::__type type;
- };
-
- template<typename Typelist_Chain, int i>
- struct chain_at_index_;
-
- template<typename Hd, typename Tl>
- struct chain_at_index_<chain<Hd, Tl>, 0>
- {
- typedef Hd type;
- };
-
- template<typename Hd, typename Tl, int i>
- struct chain_at_index_<chain<Hd, Tl>, i>
- {
- typedef typename chain_at_index_<Tl, i - 1>::type type;
- };
-
- template<class Typelist_Chain, template<typename T> class Transform>
- struct chain_transform_;
-
- template<template<typename T> class Transform>
- struct chain_transform_<null_type, Transform>
- {
- typedef null_type type;
- };
-
- template<class Hd, class Tl, template<typename T> class Transform>
- struct chain_transform_<chain<Hd, Tl>, Transform>
- {
- private:
- typedef typename chain_transform_<Tl, Transform>::type rest_type;
- typedef typename Transform<Hd>::type transform_type;
-
- public:
- typedef chain<transform_type, rest_type> type;
- };
-
- template<typename Typelist_Typelist_Chain>
- struct chain_flatten_;
-
- template<typename Hd_Tl>
- struct chain_flatten_<chain<Hd_Tl, null_type> >
- {
- typedef typename Hd_Tl::root type;
- };
-
- template<typename Hd_Typelist, class Tl_Typelist>
- struct chain_flatten_<chain<Hd_Typelist, Tl_Typelist> >
- {
- private:
- typedef typename chain_flatten_<Tl_Typelist>::type rest_type;
- typedef append<Hd_Typelist, node<rest_type> > append_type;
- public:
- typedef typename append_type::type::root type;
- };
-} // namespace detail
-} // namespace typelist
-
-_GLIBCXX_END_NAMESPACE
-
-#define _GLIBCXX_TYPELIST_CHAIN1(X0) __gnu_cxx::typelist::chain<X0, __gnu_cxx::typelist::null_type>
-#define _GLIBCXX_TYPELIST_CHAIN2(X0, X1) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN1(X1) >
-#define _GLIBCXX_TYPELIST_CHAIN3(X0, X1, X2) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN2(X1, X2) >
-#define _GLIBCXX_TYPELIST_CHAIN4(X0, X1, X2, X3) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN3(X1, X2, X3) >
-#define _GLIBCXX_TYPELIST_CHAIN5(X0, X1, X2, X3, X4) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN4(X1, X2, X3, X4) >
-#define _GLIBCXX_TYPELIST_CHAIN6(X0, X1, X2, X3, X4, X5) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN5(X1, X2, X3, X4, X5) >
-#define _GLIBCXX_TYPELIST_CHAIN7(X0, X1, X2, X3, X4, X5, X6) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN6(X1, X2, X3, X4, X5, X6) >
-#define _GLIBCXX_TYPELIST_CHAIN8(X0, X1, X2, X3, X4, X5, X6, X7) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN7(X1, X2, X3, X4, X5, X6, X7) >
-#define _GLIBCXX_TYPELIST_CHAIN9(X0, X1, X2, X3, X4, X5, X6, X7, X8) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN8(X1, X2, X3, X4, X5, X6, X7, X8) >
-#define _GLIBCXX_TYPELIST_CHAIN10(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN9(X1, X2, X3, X4, X5, X6, X7, X8, X9) >
-#define _GLIBCXX_TYPELIST_CHAIN11(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN10(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10) >
-#define _GLIBCXX_TYPELIST_CHAIN12(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN11(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11) >
-#define _GLIBCXX_TYPELIST_CHAIN13(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN12(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12) >
-#define _GLIBCXX_TYPELIST_CHAIN14(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN13(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13) >
-#define _GLIBCXX_TYPELIST_CHAIN15(X0, X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) __gnu_cxx::typelist::chain<X0, _GLIBCXX_TYPELIST_CHAIN14(X1, X2, X3, X4, X5, X6, X7, X8, X9, X10, X11, X12, X13, X14) >
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
-namespace typelist
-{
- template<typename Fn, typename Typelist>
- void
- apply(Fn& fn, Typelist)
- {
- detail::apply_<Fn, typename Typelist::root> a;
- a(fn);
- }
-
- template<typename Fn, typename Typelist>
- void
- apply_generator(Fn& fn, Typelist)
- {
- detail::apply_generator1_<Fn, typename Typelist::root> a;
- a(fn);
- }
-
- template<typename Fn, typename TypelistT, typename TypelistV>
- void
- apply_generator(Fn& fn, TypelistT, TypelistV)
- {
- typedef typename TypelistT::root rootT;
- typedef typename TypelistV::root rootV;
- detail::apply_generator2_<Fn, rootT, rootV> a;
- a(fn);
- }
-
- template<typename Typelist0, typename Typelist1>
- struct append
- {
- private:
- typedef typename Typelist0::root root0_type;
- typedef typename Typelist1::root root1_type;
- typedef detail::append_<root0_type, root1_type> append_type;
-
- public:
- typedef node<typename append_type::type> type;
- };
-
- template<typename Typelist_Typelist>
- struct append_typelist
- {
- private:
- typedef typename Typelist_Typelist::root root_type;
- typedef detail::append_typelist_<root_type> append_type;
-
- public:
- typedef node<typename append_type::type> type;
- };
-
- template<typename Typelist, typename T>
- struct contains
- {
- private:
- typedef typename Typelist::root root_type;
-
- public:
- enum
- {
- value = detail::contains_<root_type, T>::value
- };
- };
-
- template<typename Typelist, template<typename T> class Pred>
- struct filter
- {
- private:
- typedef typename Typelist::root root_type;
- typedef detail::chain_filter_<root_type, Pred> filter_type;
-
- public:
- typedef node<typename filter_type::type> type;
- };
-
- template<typename Typelist, int i>
- struct at_index
- {
- private:
- typedef typename Typelist::root root_type;
- typedef detail::chain_at_index_<root_type, i> index_type;
-
- public:
- typedef typename index_type::type type;
- };
-
- template<typename Typelist, template<typename T> class Transform>
- struct transform
- {
- private:
- typedef typename Typelist::root root_type;
- typedef detail::chain_transform_<root_type, Transform> transform_type;
-
- public:
- typedef node<typename transform_type::type> type;
- };
-
- template<typename Typelist_Typelist>
- struct flatten
- {
- private:
- typedef typename Typelist_Typelist::root root_type;
- typedef typename detail::chain_flatten_<root_type>::type flatten_type;
-
- public:
- typedef node<flatten_type> type;
- };
-
- template<typename Typelist>
- struct from_first
- {
- private:
- typedef typename at_index<Typelist, 0>::type first_type;
-
- public:
- typedef node<chain<first_type, null_type> > type;
- };
-
- template<typename T1>
- struct create1
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN1(T1)> type;
- };
-
- template<typename T1, typename T2>
- struct create2
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN2(T1,T2)> type;
- };
-
- template<typename T1, typename T2, typename T3>
- struct create3
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN3(T1,T2,T3)> type;
- };
-
- template<typename T1, typename T2, typename T3, typename T4>
- struct create4
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN4(T1,T2,T3,T4)> type;
- };
-
- template<typename T1, typename T2, typename T3,
- typename T4, typename T5>
- struct create5
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN5(T1,T2,T3,T4,T5)> type;
- };
-
- template<typename T1, typename T2, typename T3,
- typename T4, typename T5, typename T6>
- struct create6
- {
- typedef node<_GLIBCXX_TYPELIST_CHAIN6(T1,T2,T3,T4,T5,T6)> type;
- };
-} // namespace typelist
-_GLIBCXX_END_NAMESPACE
-
-
-#endif
-
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/vstring.h b/gcc-4.4.3/libstdc++-v3/include/ext/vstring.h
deleted file mode 100644
index a259d23fa..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/vstring.h
+++ /dev/null
@@ -1,2594 +0,0 @@
-// Versatile string -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/vstring.h
- * This file is a GNU extension to the Standard C++ Library.
- */
-
-#ifndef _VSTRING_H
-#define _VSTRING_H 1
-
-#pragma GCC system_header
-
-#include <initializer_list>
-#include <ext/vstring_util.h>
-#include <ext/rc_string_base.h>
-#include <ext/sso_string_base.h>
-
-#if __google_stl_debug_string && !defined(_GLIBCXX_DEBUG)
-# undef _GLIBCXX_DEBUG_ASSERT
-# undef _GLIBCXX_DEBUG_PEDASSERT
-// Perform additional checks (but only in this file).
-# define _GLIBCXX_DEBUG_ASSERT(_Condition) \
- if (! (_Condition)) { \
- char buf[512]; \
- __builtin_snprintf(buf, sizeof(buf), \
- "%s:%d: %s: Assertion '%s' failed.\n", \
- __FILE__, __LINE__, __func__, # _Condition); \
- std::__throw_runtime_error(buf); \
- }
-# define _GLIBCXX_DEBUG_PEDASSERT(_Condition) _GLIBCXX_DEBUG_ASSERT(_Condition)
-#endif
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- /**
- * @class __versa_string vstring.h
- * @brief Managing sequences of characters and character-like objects.
- */
-
- // Template class __versa_string
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- class __versa_string
- : private _Base<_CharT, _Traits, _Alloc>
- {
- typedef _Base<_CharT, _Traits, _Alloc> __vstring_base;
- typedef typename __vstring_base::_CharT_alloc_type _CharT_alloc_type;
-
- // Types:
- public:
- typedef _Traits traits_type;
- typedef typename _Traits::char_type value_type;
- typedef _Alloc allocator_type;
- typedef typename _CharT_alloc_type::size_type size_type;
- typedef typename _CharT_alloc_type::difference_type difference_type;
- typedef typename _CharT_alloc_type::reference reference;
- typedef typename _CharT_alloc_type::const_reference const_reference;
- typedef typename _CharT_alloc_type::pointer pointer;
- typedef typename _CharT_alloc_type::const_pointer const_pointer;
- typedef __gnu_cxx::__normal_iterator<pointer, __versa_string> iterator;
- typedef __gnu_cxx::__normal_iterator<const_pointer, __versa_string>
- const_iterator;
- typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
- typedef std::reverse_iterator<iterator> reverse_iterator;
-
- // Data Member (public):
- /// Value returned by various member functions when they fail.
- static const size_type npos = static_cast<size_type>(-1);
-
- private:
- size_type
- _M_check(size_type __pos, const char* __s) const
- {
- if (__pos > this->size())
- std::__throw_out_of_range(__N(__s));
- return __pos;
- }
-
- void
- _M_check_length(size_type __n1, size_type __n2, const char* __s) const
- {
- if (this->max_size() - (this->size() - __n1) < __n2)
- std::__throw_length_error(__N(__s));
- }
-
- // NB: _M_limit doesn't check for a bad __pos value.
- size_type
- _M_limit(size_type __pos, size_type __off) const
- {
- const bool __testoff = __off < this->size() - __pos;
- return __testoff ? __off : this->size() - __pos;
- }
-
- // True if _Rep and source do not overlap.
- bool
- _M_disjunct(const _CharT* __s) const
- {
- return (std::less<const _CharT*>()(__s, this->_M_data())
- || std::less<const _CharT*>()(this->_M_data()
- + this->size(), __s));
- }
-
- // For the internal use we have functions similar to `begin'/`end'
- // but they do not call _M_leak.
- iterator
- _M_ibegin() const
- { return iterator(this->_M_data()); }
-
- iterator
- _M_iend() const
- { return iterator(this->_M_data() + this->_M_length()); }
-
- public:
- // Construct/copy/destroy:
- // NB: We overload ctors in some cases instead of using default
- // arguments, per 17.4.4.4 para. 2 item 2.
-
- /**
- * @brief Default constructor creates an empty string.
- */
- __versa_string()
- : __vstring_base() { }
-
- /**
- * @brief Construct an empty string using allocator @a a.
- */
- explicit
- __versa_string(const _Alloc& __a)
- : __vstring_base(__a) { }
-
- // NB: per LWG issue 42, semantics different from IS:
- /**
- * @brief Construct string with copy of value of @a str.
- * @param __str Source string.
- */
- __versa_string(const __versa_string& __str)
- : __vstring_base(__str) { }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief String move constructor.
- * @param __str Source string.
- *
- * The newly-constructed %string contains the exact contents of
- * @a str. The contents of @a str are a valid, but unspecified
- * string.
- */
- __versa_string(__versa_string&& __str)
- : __vstring_base(std::move(__str)) { }
-
- /**
- * @brief Construct string from an initializer list.
- * @param __l std::initializer_list of characters.
- * @param __a Allocator to use (default is default allocator).
- */
- __versa_string(std::initializer_list<_CharT> __l,
- const _Alloc& __a = _Alloc())
- : __vstring_base(__l.begin(), __l.end(), __a) { }
-#endif
-
- /**
- * @brief Construct string as copy of a substring.
- * @param __str Source string.
- * @param __pos Index of first character to copy from.
- * @param __n Number of characters to copy (default remainder).
- */
- __versa_string(const __versa_string& __str, size_type __pos,
- size_type __n = npos)
- : __vstring_base(__str._M_data()
- + __str._M_check(__pos,
- "__versa_string::__versa_string"),
- __str._M_data() + __str._M_limit(__pos, __n)
- + __pos, _Alloc()) { }
-
- /**
- * @brief Construct string as copy of a substring.
- * @param __str Source string.
- * @param __pos Index of first character to copy from.
- * @param __n Number of characters to copy.
- * @param __a Allocator to use.
- */
- __versa_string(const __versa_string& __str, size_type __pos,
- size_type __n, const _Alloc& __a)
- : __vstring_base(__str._M_data()
- + __str._M_check(__pos,
- "__versa_string::__versa_string"),
- __str._M_data() + __str._M_limit(__pos, __n)
- + __pos, __a) { }
-
- /**
- * @brief Construct string initialized by a character array.
- * @param __s Source character array.
- * @param __n Number of characters to copy.
- * @param __a Allocator to use (default is default allocator).
- *
- * NB: @a __s must have at least @a __n characters, '\\0' has no special
- * meaning.
- */
- __versa_string(const _CharT* __s, size_type __n,
- const _Alloc& __a = _Alloc())
- : __vstring_base(__s, __s + __n, __a) { }
-
- /**
- * @brief Construct string as copy of a C string.
- * @param __s Source C string.
- * @param __a Allocator to use (default is default allocator).
- */
- __versa_string(const _CharT* __s, const _Alloc& __a = _Alloc())
- : __vstring_base(__s, __s ? __s + traits_type::length(__s) :
- __s + npos, __a) { }
-
- /**
- * @brief Construct string as multiple characters.
- * @param __n Number of characters.
- * @param __c Character to use.
- * @param __a Allocator to use (default is default allocator).
- */
- __versa_string(size_type __n, _CharT __c, const _Alloc& __a = _Alloc())
- : __vstring_base(__n, __c, __a) { }
-
- /**
- * @brief Construct string as copy of a range.
- * @param __beg Start of range.
- * @param __end End of range.
- * @param __a Allocator to use (default is default allocator).
- */
- template<class _InputIterator>
- __versa_string(_InputIterator __beg, _InputIterator __end,
- const _Alloc& __a = _Alloc())
- : __vstring_base(__beg, __end, __a) { }
-
- /**
- * @brief Destroy the string instance.
- */
- ~__versa_string() { }
-
- /**
- * @brief Assign the value of @a str to this string.
- * @param __str Source string.
- */
- __versa_string&
- operator=(const __versa_string& __str)
- { return this->assign(__str); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief String move assignment operator.
- * @param __str Source string.
- *
- * The contents of @a __str are moved into this string (without
- * copying). @a __str is a valid, but unspecified string.
- */
- __versa_string&
- operator=(__versa_string&& __str)
- {
- if (this != &__str)
- this->swap(__str);
- return *this;
- }
-
- /**
- * @brief Set value to string constructed from initializer list.
- * @param __l std::initializer_list.
- */
- __versa_string&
- operator=(std::initializer_list<_CharT> __l)
- {
- this->assign(__l.begin(), __l.end());
- return *this;
- }
-#endif
-
- /**
- * @brief Copy contents of @a __s into this string.
- * @param __s Source null-terminated string.
- */
- __versa_string&
- operator=(const _CharT* __s)
- { return this->assign(__s); }
-
- /**
- * @brief Set value to string of length 1.
- * @param __c Source character.
- *
- * Assigning to a character makes this string length 1 and
- * (*this)[0] == @a __c.
- */
- __versa_string&
- operator=(_CharT __c)
- {
- this->assign(1, __c);
- return *this;
- }
-
- // Iterators:
- /**
- * Returns a read/write iterator that points to the first character in
- * the %string. Unshares the string.
- */
- iterator
- begin()
- {
- this->_M_leak();
- return iterator(this->_M_data());
- }
-
- /**
- * Returns a read-only (constant) iterator that points to the first
- * character in the %string.
- */
- const_iterator
- begin() const
- { return const_iterator(this->_M_data()); }
-
- /**
- * Returns a read/write iterator that points one past the last
- * character in the %string. Unshares the string.
- */
- iterator
- end()
- {
- this->_M_leak();
- return iterator(this->_M_data() + this->size());
- }
-
- /**
- * Returns a read-only (constant) iterator that points one past the
- * last character in the %string.
- */
- const_iterator
- end() const
- { return const_iterator(this->_M_data() + this->size()); }
-
- /**
- * Returns a read/write reverse iterator that points to the last
- * character in the %string. Iteration is done in reverse element
- * order. Unshares the string.
- */
- reverse_iterator
- rbegin()
- { return reverse_iterator(this->end()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points
- * to the last character in the %string. Iteration is done in
- * reverse element order.
- */
- const_reverse_iterator
- rbegin() const
- { return const_reverse_iterator(this->end()); }
-
- /**
- * Returns a read/write reverse iterator that points to one before the
- * first character in the %string. Iteration is done in reverse
- * element order. Unshares the string.
- */
- reverse_iterator
- rend()
- { return reverse_iterator(this->begin()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points
- * to one before the first character in the %string. Iteration
- * is done in reverse element order.
- */
- const_reverse_iterator
- rend() const
- { return const_reverse_iterator(this->begin()); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * Returns a read-only (constant) iterator that points to the first
- * character in the %string.
- */
- const_iterator
- cbegin() const
- { return const_iterator(this->_M_data()); }
-
- /**
- * Returns a read-only (constant) iterator that points one past the
- * last character in the %string.
- */
- const_iterator
- cend() const
- { return const_iterator(this->_M_data() + this->size()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points
- * to the last character in the %string. Iteration is done in
- * reverse element order.
- */
- const_reverse_iterator
- crbegin() const
- { return const_reverse_iterator(this->end()); }
-
- /**
- * Returns a read-only (constant) reverse iterator that points
- * to one before the first character in the %string. Iteration
- * is done in reverse element order.
- */
- const_reverse_iterator
- crend() const
- { return const_reverse_iterator(this->begin()); }
-#endif
-
- public:
- // Capacity:
- /// Returns the number of characters in the string, not including any
- /// null-termination.
- size_type
- size() const
- { return this->_M_length(); }
-
- /// Returns the number of characters in the string, not including any
- /// null-termination.
- size_type
- length() const
- { return this->_M_length(); }
-
- /// Returns the size() of the largest possible %string.
- size_type
- max_size() const
- { return this->_M_max_size(); }
-
- /**
- * @brief Resizes the %string to the specified number of characters.
- * @param __n Number of characters the %string should contain.
- * @param __c Character to fill any new elements.
- *
- * This function will %resize the %string to the specified
- * number of characters. If the number is smaller than the
- * %string's current size the %string is truncated, otherwise
- * the %string is extended and new elements are set to @a __c.
- */
- void
- resize(size_type __n, _CharT __c);
-
- /**
- * @brief Resizes the %string to the specified number of characters.
- * @param __n Number of characters the %string should contain.
- *
- * This function will resize the %string to the specified
- * length. If the new size is smaller than the %string's
- * current size the %string is truncated, otherwise the %string
- * is extended and new characters are default-constructed. For
- * basic types such as char, this means setting them to 0.
- */
- void
- resize(size_type __n)
- { this->resize(__n, _CharT()); }
-
- /**
- * Returns the total number of characters that the %string can
- * hold before needing to allocate more memory.
- */
- size_type
- capacity() const
- { return this->_M_capacity(); }
-
- /**
- * @brief Attempt to preallocate enough memory for specified number of
- * characters.
- * @param __res_arg Number of characters required.
- * @throw std::length_error If @a __res_arg exceeds @c max_size().
- *
- * This function attempts to reserve enough memory for the
- * %string to hold the specified number of characters. If the
- * number requested is more than max_size(), length_error is
- * thrown.
- *
- * The advantage of this function is that if optimal code is a
- * necessity and the user can determine the string length that
- * will be required, the user can reserve the memory in
- * %advance, and thus prevent a possible reallocation of memory
- * and copying of %string data.
- */
- void
- reserve(size_type __res_arg = 0)
- { this->_M_reserve(__res_arg); }
-
- /**
- * Erases the string, making it empty.
- */
- void
- clear()
- { this->_M_clear(); }
-
- /**
- * Returns true if the %string is empty. Equivalent to *this == "".
- */
- bool
- empty() const
- { return this->size() == 0; }
-
- // Element access:
- /**
- * @brief Subscript access to the data contained in the %string.
- * @param __pos The index of the character to access.
- * @return Read-only (constant) reference to the character.
- *
- * This operator allows for easy, array-style, data access.
- * Note that data access with this operator is unchecked and
- * out_of_range lookups are not defined. (For checked lookups
- * see at().)
- */
- const_reference
- operator[] (size_type __pos) const
- {
- _GLIBCXX_DEBUG_ASSERT(__pos <= this->size());
- return this->_M_data()[__pos];
- }
-
- /**
- * @brief Subscript access to the data contained in the %string.
- * @param __pos The index of the character to access.
- * @return Read/write reference to the character.
- *
- * This operator allows for easy, array-style, data access.
- * Note that data access with this operator is unchecked and
- * out_of_range lookups are not defined. (For checked lookups
- * see at().) Unshares the string.
- */
- reference
- operator[](size_type __pos)
- {
- // allow pos == size() as v3 extension:
- _GLIBCXX_DEBUG_ASSERT(__pos <= this->size());
- // but be strict in pedantic mode:
- _GLIBCXX_DEBUG_PEDASSERT(__pos < this->size());
- this->_M_leak();
- return this->_M_data()[__pos];
- }
-
- /**
- * @brief Provides access to the data contained in the %string.
- * @param __n The index of the character to access.
- * @return Read-only (const) reference to the character.
- * @throw std::out_of_range If @a __n is an invalid index.
- *
- * This function provides for safer data access. The parameter
- * is first checked that it is in the range of the string. The
- * function throws out_of_range if the check fails.
- */
- const_reference
- at(size_type __n) const
- {
- if (__n >= this->size())
- std::__throw_out_of_range(__N("__versa_string::at"));
- return this->_M_data()[__n];
- }
-
- /**
- * @brief Provides access to the data contained in the %string.
- * @param __n The index of the character to access.
- * @return Read/write reference to the character.
- * @throw std::out_of_range If @a __n is an invalid index.
- *
- * This function provides for safer data access. The parameter
- * is first checked that it is in the range of the string. The
- * function throws out_of_range if the check fails. Success
- * results in unsharing the string.
- */
- reference
- at(size_type __n)
- {
- if (__n >= this->size())
- std::__throw_out_of_range(__N("__versa_string::at"));
- this->_M_leak();
- return this->_M_data()[__n];
- }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * Returns a read/write reference to the data at the first
- * element of the %string.
- */
- reference
- front()
- { return *begin(); }
-
- /**
- * Returns a read-only (constant) reference to the data at the first
- * element of the %string.
- */
- const_reference
- front() const
- { return *begin(); }
-
- /**
- * Returns a read/write reference to the data at the last
- * element of the %string.
- */
- reference
- back()
- { return *(end() - 1); }
-
- /**
- * Returns a read-only (constant) reference to the data at the
- * last element of the %string.
- */
- const_reference
- back() const
- { return *(end() - 1); }
-#endif
-
- // Modifiers:
- /**
- * @brief Append a string to this string.
- * @param __str The string to append.
- * @return Reference to this string.
- */
- __versa_string&
- operator+=(const __versa_string& __str)
- { return this->append(__str); }
-
- /**
- * @brief Append a C string.
- * @param __s The C string to append.
- * @return Reference to this string.
- */
- __versa_string&
- operator+=(const _CharT* __s)
- { return this->append(__s); }
-
- /**
- * @brief Append a character.
- * @param __c The character to append.
- * @return Reference to this string.
- */
- __versa_string&
- operator+=(_CharT __c)
- {
- this->push_back(__c);
- return *this;
- }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief Append an initializer_list of characters.
- * @param __l The initializer_list of characters to be appended.
- * @return Reference to this string.
- */
- __versa_string&
- operator+=(std::initializer_list<_CharT> __l)
- { return this->append(__l.begin(), __l.end()); }
-#endif // __GXX_EXPERIMENTAL_CXX0X__
-
- /**
- * @brief Append a string to this string.
- * @param __str The string to append.
- * @return Reference to this string.
- */
- __versa_string&
- append(const __versa_string& __str)
- { return _M_append(__str._M_data(), __str.size()); }
-
- /**
- * @brief Append a substring.
- * @param __str The string to append.
- * @param __pos Index of the first character of str to append.
- * @param __n The number of characters to append.
- * @return Reference to this string.
- * @throw std::out_of_range if @a pos is not a valid index.
- *
- * This function appends @a __n characters from @a __str
- * starting at @a __pos to this string. If @a __n is is larger
- * than the number of available characters in @a __str, the
- * remainder of @a __str is appended.
- */
- __versa_string&
- append(const __versa_string& __str, size_type __pos, size_type __n)
- { return _M_append(__str._M_data()
- + __str._M_check(__pos, "__versa_string::append"),
- __str._M_limit(__pos, __n)); }
-
- /**
- * @brief Append a C substring.
- * @param __s The C string to append.
- * @param __n The number of characters to append.
- * @return Reference to this string.
- */
- __versa_string&
- append(const _CharT* __s, size_type __n)
- {
- __glibcxx_requires_string_len(__s, __n);
- _M_check_length(size_type(0), __n, "__versa_string::append");
- return _M_append(__s, __n);
- }
-
- /**
- * @brief Append a C string.
- * @param __s The C string to append.
- * @return Reference to this string.
- */
- __versa_string&
- append(const _CharT* __s)
- {
- __glibcxx_requires_string(__s);
- const size_type __n = traits_type::length(__s);
- _M_check_length(size_type(0), __n, "__versa_string::append");
- return _M_append(__s, __n);
- }
-
- /**
- * @brief Append multiple characters.
- * @param __n The number of characters to append.
- * @param __c The character to use.
- * @return Reference to this string.
- *
- * Appends n copies of c to this string.
- */
- __versa_string&
- append(size_type __n, _CharT __c)
- { return _M_replace_aux(this->size(), size_type(0), __n, __c); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief Append an initializer_list of characters.
- * @param __l The initializer_list of characters to append.
- * @return Reference to this string.
- */
- __versa_string&
- append(std::initializer_list<_CharT> __l)
- { return this->append(__l.begin(), __l.end()); }
-#endif // __GXX_EXPERIMENTAL_CXX0X__
-
- /**
- * @brief Append a range of characters.
- * @param __first Iterator referencing the first character to append.
- * @param __last Iterator marking the end of the range.
- * @return Reference to this string.
- *
- * Appends characters in the range [first,last) to this string.
- */
- template<class _InputIterator>
- __versa_string&
- append(_InputIterator __first, _InputIterator __last)
- { return this->replace(_M_iend(), _M_iend(), __first, __last); }
-
- /**
- * @brief Append a single character.
- * @param __c Character to append.
- */
- void
- push_back(_CharT __c)
- {
- const size_type __size = this->size();
- if (__size + 1 > this->capacity() || this->_M_is_shared())
- this->_M_mutate(__size, size_type(0), 0, size_type(1));
- traits_type::assign(this->_M_data()[__size], __c);
- this->_M_set_length(__size + 1);
- }
-
- /**
- * @brief Set value to contents of another string.
- * @param __str Source string to use.
- * @return Reference to this string.
- */
- __versa_string&
- assign(const __versa_string& __str)
- {
- this->_M_assign(__str);
- return *this;
- }
-
- /**
- * @brief Set value to a substring of a string.
- * @param __str The string to use.
- * @param __pos Index of the first character of str.
- * @param __n Number of characters to use.
- * @return Reference to this string.
- * @throw std::out_of_range if @a __pos is not a valid index.
- *
- * This function sets this string to the substring of @a __str
- * consisting of @a __n characters at @a __pos. If @a __n is
- * is larger than the number of available characters in @a
- * __str, the remainder of @a __str is used.
- */
- __versa_string&
- assign(const __versa_string& __str, size_type __pos, size_type __n)
- { return _M_replace(size_type(0), this->size(), __str._M_data()
- + __str._M_check(__pos, "__versa_string::assign"),
- __str._M_limit(__pos, __n)); }
-
- /**
- * @brief Set value to a C substring.
- * @param __s The C string to use.
- * @param __n Number of characters to use.
- * @return Reference to this string.
- *
- * This function sets the value of this string to the first @a
- * __n characters of @a __s. If @a __n is is larger than the
- * number of available characters in @a __s, the remainder of
- * @a __s is used.
- */
- __versa_string&
- assign(const _CharT* __s, size_type __n)
- {
- __glibcxx_requires_string_len(__s, __n);
- return _M_replace(size_type(0), this->size(), __s, __n);
- }
-
- /**
- * @brief Set value to contents of a C string.
- * @param __s The C string to use.
- * @return Reference to this string.
- *
- * This function sets the value of this string to the value of
- * @a __s. The data is copied, so there is no dependence on @a
- * __s once the function returns.
- */
- __versa_string&
- assign(const _CharT* __s)
- {
- __glibcxx_requires_string(__s);
- return _M_replace(size_type(0), this->size(), __s,
- traits_type::length(__s));
- }
-
- /**
- * @brief Set value to multiple characters.
- * @param __n Length of the resulting string.
- * @param __c The character to use.
- * @return Reference to this string.
- *
- * This function sets the value of this string to @a __n copies of
- * character @a __c.
- */
- __versa_string&
- assign(size_type __n, _CharT __c)
- { return _M_replace_aux(size_type(0), this->size(), __n, __c); }
-
- /**
- * @brief Set value to a range of characters.
- * @param __first Iterator referencing the first character to append.
- * @param __last Iterator marking the end of the range.
- * @return Reference to this string.
- *
- * Sets value of string to characters in the range
- * [first,last).
- */
- template<class _InputIterator>
- __versa_string&
- assign(_InputIterator __first, _InputIterator __last)
- { return this->replace(_M_ibegin(), _M_iend(), __first, __last); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief Set value to an initializer_list of characters.
- * @param __l The initializer_list of characters to assign.
- * @return Reference to this string.
- */
- __versa_string&
- assign(std::initializer_list<_CharT> __l)
- { return this->assign(__l.begin(), __l.end()); }
-#endif // __GXX_EXPERIMENTAL_CXX0X__
-
- /**
- * @brief Insert multiple characters.
- * @param __p Iterator referencing location in string to insert at.
- * @param __n Number of characters to insert
- * @param __c The character to insert.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Inserts @a __n copies of character @a __c starting at the
- * position referenced by iterator @a __p. If adding
- * characters causes the length to exceed max_size(),
- * length_error is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- void
- insert(iterator __p, size_type __n, _CharT __c)
- { this->replace(__p, __p, __n, __c); }
-
- /**
- * @brief Insert a range of characters.
- * @param __p Iterator referencing location in string to insert at.
- * @param __beg Start of range.
- * @param __end End of range.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Inserts characters in range [beg,end). If adding characters
- * causes the length to exceed max_size(), length_error is
- * thrown. The value of the string doesn't change if an error
- * is thrown.
- */
- template<class _InputIterator>
- void
- insert(iterator __p, _InputIterator __beg, _InputIterator __end)
- { this->replace(__p, __p, __beg, __end); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief Insert an initializer_list of characters.
- * @param __p Iterator referencing location in string to insert at.
- * @param __l The initializer_list of characters to insert.
- * @throw std::length_error If new length exceeds @c max_size().
- */
- void
- insert(iterator __p, std::initializer_list<_CharT> __l)
- { this->insert(__p, __l.begin(), __l.end()); }
-#endif // __GXX_EXPERIMENTAL_CXX0X__
-
- /**
- * @brief Insert value of a string.
- * @param __pos1 Iterator referencing location in string to insert at.
- * @param __str The string to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Inserts value of @a __str starting at @a __pos1. If adding
- * characters causes the length to exceed max_size(),
- * length_error is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- __versa_string&
- insert(size_type __pos1, const __versa_string& __str)
- { return this->replace(__pos1, size_type(0),
- __str._M_data(), __str.size()); }
-
- /**
- * @brief Insert a substring.
- * @param __pos1 Iterator referencing location in string to insert at.
- * @param __str The string to insert.
- * @param __pos2 Start of characters in str to insert.
- * @param __n Number of characters to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- * @throw std::out_of_range If @a __pos1 > size() or
- * @a __pos2 > @a __str.size().
- *
- * Starting at @a __pos1, insert @a __n character of @a __str
- * beginning with @a __pos2. If adding characters causes the
- * length to exceed max_size(), length_error is thrown. If @a
- * __pos1 is beyond the end of this string or @a __pos2 is
- * beyond the end of @a __str, out_of_range is thrown. The
- * value of the string doesn't change if an error is thrown.
- */
- __versa_string&
- insert(size_type __pos1, const __versa_string& __str,
- size_type __pos2, size_type __n)
- { return this->replace(__pos1, size_type(0), __str._M_data()
- + __str._M_check(__pos2, "__versa_string::insert"),
- __str._M_limit(__pos2, __n)); }
-
- /**
- * @brief Insert a C substring.
- * @param __pos Iterator referencing location in string to insert at.
- * @param __s The C string to insert.
- * @param __n The number of characters to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- * @throw std::out_of_range If @a __pos is beyond the end of this
- * string.
- *
- * Inserts the first @a __n characters of @a __s starting at @a
- * __pos. If adding characters causes the length to exceed
- * max_size(), length_error is thrown. If @a __pos is beyond
- * end(), out_of_range is thrown. The value of the string
- * doesn't change if an error is thrown.
- */
- __versa_string&
- insert(size_type __pos, const _CharT* __s, size_type __n)
- { return this->replace(__pos, size_type(0), __s, __n); }
-
- /**
- * @brief Insert a C string.
- * @param __pos Iterator referencing location in string to insert at.
- * @param __s The C string to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- * @throw std::out_of_range If @a __pos is beyond the end of this
- * string.
- *
- * Inserts the first @a __n characters of @a __s starting at @a
- * __pos. If adding characters causes the length to exceed
- * max_size(), length_error is thrown. If @a __pos is beyond
- * end(), out_of_range is thrown. The value of the string
- * doesn't change if an error is thrown.
- */
- __versa_string&
- insert(size_type __pos, const _CharT* __s)
- {
- __glibcxx_requires_string(__s);
- return this->replace(__pos, size_type(0), __s,
- traits_type::length(__s));
- }
-
- /**
- * @brief Insert multiple characters.
- * @param __pos Index in string to insert at.
- * @param __n Number of characters to insert
- * @param __c The character to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- * @throw std::out_of_range If @a __pos is beyond the end of this
- * string.
- *
- * Inserts @a __n copies of character @a __c starting at index
- * @a __pos. If adding characters causes the length to exceed
- * max_size(), length_error is thrown. If @a __pos > length(),
- * out_of_range is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- __versa_string&
- insert(size_type __pos, size_type __n, _CharT __c)
- { return _M_replace_aux(_M_check(__pos, "__versa_string::insert"),
- size_type(0), __n, __c); }
-
- /**
- * @brief Insert one character.
- * @param __p Iterator referencing position in string to insert at.
- * @param __c The character to insert.
- * @return Iterator referencing newly inserted char.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Inserts character @a __c at position referenced by @a __p.
- * If adding character causes the length to exceed max_size(),
- * length_error is thrown. If @a __p is beyond end of string,
- * out_of_range is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- iterator
- insert(iterator __p, _CharT __c)
- {
- _GLIBCXX_DEBUG_PEDASSERT(__p >= _M_ibegin() && __p <= _M_iend());
- const size_type __pos = __p - _M_ibegin();
- _M_replace_aux(__pos, size_type(0), size_type(1), __c);
- this->_M_set_leaked();
- return iterator(this->_M_data() + __pos);
- }
-
- /**
- * @brief Remove characters.
- * @param __pos Index of first character to remove (default 0).
- * @param __n Number of characters to remove (default remainder).
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos is beyond the end of this
- * string.
- *
- * Removes @a __n characters from this string starting at @a
- * __pos. The length of the string is reduced by @a __n. If
- * there are < @a __n characters to remove, the remainder of
- * the string is truncated. If @a __p is beyond end of string,
- * out_of_range is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- __versa_string&
- erase(size_type __pos = 0, size_type __n = npos)
- {
- this->_M_erase(_M_check(__pos, "__versa_string::erase"),
- _M_limit(__pos, __n));
- return *this;
- }
-
- /**
- * @brief Remove one character.
- * @param __position Iterator referencing the character to remove.
- * @return iterator referencing same location after removal.
- *
- * Removes the character at @a __position from this string. The
- * value of the string doesn't change if an error is thrown.
- */
- iterator
- erase(iterator __position)
- {
- _GLIBCXX_DEBUG_PEDASSERT(__position >= _M_ibegin()
- && __position < _M_iend());
- const size_type __pos = __position - _M_ibegin();
- this->_M_erase(__pos, size_type(1));
- this->_M_set_leaked();
- return iterator(this->_M_data() + __pos);
- }
-
- /**
- * @brief Remove a range of characters.
- * @param __first Iterator referencing the first character to remove.
- * @param __last Iterator referencing the end of the range.
- * @return Iterator referencing location of first after removal.
- *
- * Removes the characters in the range [first,last) from this
- * string. The value of the string doesn't change if an error
- * is thrown.
- */
- iterator
- erase(iterator __first, iterator __last)
- {
- _GLIBCXX_DEBUG_PEDASSERT(__first >= _M_ibegin() && __first <= __last
- && __last <= _M_iend());
- const size_type __pos = __first - _M_ibegin();
- this->_M_erase(__pos, __last - __first);
- this->_M_set_leaked();
- return iterator(this->_M_data() + __pos);
- }
-
- /**
- * @brief Replace characters with value from another string.
- * @param __pos Index of first character to replace.
- * @param __n Number of characters to be replaced.
- * @param __str String to insert.
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos is beyond the end of this
- * string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [pos,pos+n) from this
- * string. In place, the value of @a __str is inserted. If @a
- * __pos is beyond end of string, out_of_range is thrown. If
- * the length of the result exceeds max_size(), length_error is
- * thrown. The value of the string doesn't change if an error
- * is thrown.
- */
- __versa_string&
- replace(size_type __pos, size_type __n, const __versa_string& __str)
- { return this->replace(__pos, __n, __str._M_data(), __str.size()); }
-
- /**
- * @brief Replace characters with value from another string.
- * @param __pos1 Index of first character to replace.
- * @param __n1 Number of characters to be replaced.
- * @param __str String to insert.
- * @param __pos2 Index of first character of str to use.
- * @param __n2 Number of characters from str to use.
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos1 > size() or @a __pos2 >
- * str.size().
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [pos1,pos1 + n) from
- * this string. In place, the value of @a __str is inserted.
- * If @a __pos is beyond end of string, out_of_range is thrown.
- * If the length of the result exceeds max_size(), length_error
- * is thrown. The value of the string doesn't change if an
- * error is thrown.
- */
- __versa_string&
- replace(size_type __pos1, size_type __n1, const __versa_string& __str,
- size_type __pos2, size_type __n2)
- {
- return this->replace(__pos1, __n1, __str._M_data()
- + __str._M_check(__pos2,
- "__versa_string::replace"),
- __str._M_limit(__pos2, __n2));
- }
-
- /**
- * @brief Replace characters with value of a C substring.
- * @param __pos Index of first character to replace.
- * @param __n1 Number of characters to be replaced.
- * @param __s C string to insert.
- * @param __n2 Number of characters from @a __s to use.
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos1 > size().
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [pos,pos + n1) from this
- * string. In place, the first @a __n2 characters of @a __s
- * are inserted, or all of @a __s if @a __n2 is too large. If
- * @a __pos is beyond end of string, out_of_range is thrown.
- * If the length of result exceeds max_size(), length_error is
- * thrown. The value of the string doesn't change if an error
- * is thrown.
- */
- __versa_string&
- replace(size_type __pos, size_type __n1, const _CharT* __s,
- size_type __n2)
- {
- __glibcxx_requires_string_len(__s, __n2);
- return _M_replace(_M_check(__pos, "__versa_string::replace"),
- _M_limit(__pos, __n1), __s, __n2);
- }
-
- /**
- * @brief Replace characters with value of a C string.
- * @param __pos Index of first character to replace.
- * @param __n1 Number of characters to be replaced.
- * @param __s C string to insert.
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos > size().
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [pos,pos + n1) from this
- * string. In place, the first @a __n characters of @a __s are
- * inserted. If @a pos is beyond end of string, out_of_range
- * is thrown. If the length of result exceeds max_size(),
- * length_error is thrown. The value of the string doesn't
- * change if an error is thrown.
- */
- __versa_string&
- replace(size_type __pos, size_type __n1, const _CharT* __s)
- {
- __glibcxx_requires_string(__s);
- return this->replace(__pos, __n1, __s, traits_type::length(__s));
- }
-
- /**
- * @brief Replace characters with multiple characters.
- * @param __pos Index of first character to replace.
- * @param __n1 Number of characters to be replaced.
- * @param __n2 Number of characters to insert.
- * @param __c Character to insert.
- * @return Reference to this string.
- * @throw std::out_of_range If @a __pos > size().
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [pos,pos + n1) from this
- * string. In place, @a __n2 copies of @a __c are inserted.
- * If @a __pos is beyond end of string, out_of_range is thrown.
- * If the length of result exceeds max_size(), length_error is
- * thrown. The value of the string doesn't change if an error
- * is thrown.
- */
- __versa_string&
- replace(size_type __pos, size_type __n1, size_type __n2, _CharT __c)
- { return _M_replace_aux(_M_check(__pos, "__versa_string::replace"),
- _M_limit(__pos, __n1), __n2, __c); }
-
- /**
- * @brief Replace range of characters with string.
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __str String value to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place, the
- * value of @a __str is inserted. If the length of result
- * exceeds max_size(), length_error is thrown. The value of
- * the string doesn't change if an error is thrown.
- */
- __versa_string&
- replace(iterator __i1, iterator __i2, const __versa_string& __str)
- { return this->replace(__i1, __i2, __str._M_data(), __str.size()); }
-
- /**
- * @brief Replace range of characters with C substring.
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __s C string value to insert.
- * @param __n Number of characters from s to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place, the
- * first @a n characters of @a __s are inserted. If the length
- * of result exceeds max_size(), length_error is thrown. The
- * value of the string doesn't change if an error is thrown.
- */
- __versa_string&
- replace(iterator __i1, iterator __i2, const _CharT* __s, size_type __n)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1, __s, __n);
- }
-
- /**
- * @brief Replace range of characters with C string.
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __s C string value to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place, the
- * characters of @a __s are inserted. If the length of result
- * exceeds max_size(), length_error is thrown. The value of
- * the string doesn't change if an error is thrown.
- */
- __versa_string&
- replace(iterator __i1, iterator __i2, const _CharT* __s)
- {
- __glibcxx_requires_string(__s);
- return this->replace(__i1, __i2, __s, traits_type::length(__s));
- }
-
- /**
- * @brief Replace range of characters with multiple characters
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __n Number of characters to insert.
- * @param __c Character to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place, @a
- * __n copies of @a __c are inserted. If the length of result
- * exceeds max_size(), length_error is thrown. The value of
- * the string doesn't change if an error is thrown.
- */
- __versa_string&
- replace(iterator __i1, iterator __i2, size_type __n, _CharT __c)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __c);
- }
-
- /**
- * @brief Replace range of characters with range.
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __k1 Iterator referencing start of range to insert.
- * @param __k2 Iterator referencing end of range to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place,
- * characters in the range [k1,k2) are inserted. If the length
- * of result exceeds max_size(), length_error is thrown. The
- * value of the string doesn't change if an error is thrown.
- */
- template<class _InputIterator>
- __versa_string&
- replace(iterator __i1, iterator __i2,
- _InputIterator __k1, _InputIterator __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- typedef typename std::__is_integer<_InputIterator>::__type _Integral;
- return this->_M_replace_dispatch(__i1, __i2, __k1, __k2, _Integral());
- }
-
- // Specializations for the common case of pointer and iterator:
- // useful to avoid the overhead of temporary buffering in _M_replace.
- __versa_string&
- replace(iterator __i1, iterator __i2, _CharT* __k1, _CharT* __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1, __k2 - __k1);
- }
-
- __versa_string&
- replace(iterator __i1, iterator __i2,
- const _CharT* __k1, const _CharT* __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1, __k2 - __k1);
- }
-
- __versa_string&
- replace(iterator __i1, iterator __i2, iterator __k1, iterator __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1.base(), __k2 - __k1);
- }
-
- __versa_string&
- replace(iterator __i1, iterator __i2,
- const_iterator __k1, const_iterator __k2)
- {
- _GLIBCXX_DEBUG_PEDASSERT(_M_ibegin() <= __i1 && __i1 <= __i2
- && __i2 <= _M_iend());
- __glibcxx_requires_valid_range(__k1, __k2);
- return this->replace(__i1 - _M_ibegin(), __i2 - __i1,
- __k1.base(), __k2 - __k1);
- }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- /**
- * @brief Replace range of characters with initializer_list.
- * @param __i1 Iterator referencing start of range to replace.
- * @param __i2 Iterator referencing end of range to replace.
- * @param __l The initializer_list of characters to insert.
- * @return Reference to this string.
- * @throw std::length_error If new length exceeds @c max_size().
- *
- * Removes the characters in the range [i1,i2). In place,
- * characters in the range [k1,k2) are inserted. If the length
- * of result exceeds max_size(), length_error is thrown. The
- * value of the string doesn't change if an error is thrown.
- */
- __versa_string& replace(iterator __i1, iterator __i2,
- std::initializer_list<_CharT> __l)
- { return this->replace(__i1, __i2, __l.begin(), __l.end()); }
-#endif // __GXX_EXPERIMENTAL_CXX0X__
-
- private:
- template<class _Integer>
- __versa_string&
- _M_replace_dispatch(iterator __i1, iterator __i2, _Integer __n,
- _Integer __val, std::__true_type)
- { return _M_replace_aux(__i1 - _M_ibegin(), __i2 - __i1, __n, __val); }
-
- template<class _InputIterator>
- __versa_string&
- _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
- _InputIterator __k2, std::__false_type);
-
- __versa_string&
- _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
- _CharT __c);
-
- __versa_string&
- _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
- const size_type __len2);
-
- __versa_string&
- _M_append(const _CharT* __s, size_type __n);
-
- public:
-
- /**
- * @brief Copy substring into C string.
- * @param __s C string to copy value into.
- * @param __n Number of characters to copy.
- * @param __pos Index of first character to copy.
- * @return Number of characters actually copied
- * @throw std::out_of_range If pos > size().
- *
- * Copies up to @a __n characters starting at @a __pos into the
- * C string @a s. If @a __pos is greater than size(),
- * out_of_range is thrown.
- */
- size_type
- copy(_CharT* __s, size_type __n, size_type __pos = 0) const;
-
- /**
- * @brief Swap contents with another string.
- * @param __s String to swap with.
- *
- * Exchanges the contents of this string with that of @a __s in
- * constant time.
- */
- void
- swap(__versa_string& __s)
- { this->_M_swap(__s); }
-
- // String operations:
- /**
- * @brief Return const pointer to null-terminated contents.
- *
- * This is a handle to internal data. Do not modify or dire things may
- * happen.
- */
- const _CharT*
- c_str() const
- { return this->_M_data(); }
-
- /**
- * @brief Return const pointer to contents.
- *
- * This is a handle to internal data. Do not modify or dire things may
- * happen.
- */
- const _CharT*
- data() const
- { return this->_M_data(); }
-
- /**
- * @brief Return copy of allocator used to construct this string.
- */
- allocator_type
- get_allocator() const
- { return allocator_type(this->_M_get_allocator()); }
-
- /**
- * @brief Find position of a C substring.
- * @param __s C string to locate.
- * @param __pos Index of character to search from.
- * @param __n Number of characters from @a __s to search for.
- * @return Index of start of first occurrence.
- *
- * Starting from @a __pos, searches forward for the first @a
- * __n characters in @a __s within this string. If found,
- * returns the index where it begins. If not found, returns
- * npos.
- */
- size_type
- find(const _CharT* __s, size_type __pos, size_type __n) const;
-
- /**
- * @brief Find position of a string.
- * @param __str String to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of start of first occurrence.
- *
- * Starting from @a __pos, searches forward for value of @a
- * __str within this string. If found, returns the index where
- * it begins. If not found, returns npos.
- */
- size_type
- find(const __versa_string& __str, size_type __pos = 0) const
- { return this->find(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find position of a C string.
- * @param __s C string to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of start of first occurrence.
- *
- * Starting from @a __pos, searches forward for the value of @a
- * __s within this string. If found, returns the index where
- * it begins. If not found, returns npos.
- */
- size_type
- find(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_requires_string(__s);
- return this->find(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find position of a character.
- * @param __c Character to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for @a __c within
- * this string. If found, returns the index where it was
- * found. If not found, returns npos.
- */
- size_type
- find(_CharT __c, size_type __pos = 0) const;
-
- /**
- * @brief Find last position of a string.
- * @param __str String to locate.
- * @param __pos Index of character to search back from (default end).
- * @return Index of start of last occurrence.
- *
- * Starting from @a __pos, searches backward for value of @a
- * __str within this string. If found, returns the index where
- * it begins. If not found, returns npos.
- */
- size_type
- rfind(const __versa_string& __str, size_type __pos = npos) const
- { return this->rfind(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find last position of a C substring.
- * @param __s C string to locate.
- * @param __pos Index of character to search back from.
- * @param __n Number of characters from s to search for.
- * @return Index of start of last occurrence.
- *
- * Starting from @a __pos, searches backward for the first @a
- * __n characters in @a __s within this string. If found,
- * returns the index where it begins. If not found, returns
- * npos.
- */
- size_type
- rfind(const _CharT* __s, size_type __pos, size_type __n) const;
-
- /**
- * @brief Find last position of a C string.
- * @param __s C string to locate.
- * @param __pos Index of character to start search at (default end).
- * @return Index of start of last occurrence.
- *
- * Starting from @a __pos, searches backward for the value of
- * @a __s within this string. If found, returns the index
- * where it begins. If not found, returns npos.
- */
- size_type
- rfind(const _CharT* __s, size_type __pos = npos) const
- {
- __glibcxx_requires_string(__s);
- return this->rfind(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find last position of a character.
- * @param __c Character to locate.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for @a __c within
- * this string. If found, returns the index where it was
- * found. If not found, returns npos.
- */
- size_type
- rfind(_CharT __c, size_type __pos = npos) const;
-
- /**
- * @brief Find position of a character of string.
- * @param __str String containing characters to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for one of the characters of
- * @a __str within this string. If found, returns the index where it was
- * found. If not found, returns npos.
- */
- size_type
- find_first_of(const __versa_string& __str, size_type __pos = 0) const
- { return this->find_first_of(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find position of a character of C substring.
- * @param __s String containing characters to locate.
- * @param __pos Index of character to search from.
- * @param __n Number of characters from s to search for.
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for one of the
- * first @a __n characters of @a __s within this string. If
- * found, returns the index where it was found. If not found,
- * returns npos.
- */
- size_type
- find_first_of(const _CharT* __s, size_type __pos, size_type __n) const;
-
- /**
- * @brief Find position of a character of C string.
- * @param __s String containing characters to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for one of the
- * characters of @a __s within this string. If found, returns
- * the index where it was found. If not found, returns npos.
- */
- size_type
- find_first_of(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_requires_string(__s);
- return this->find_first_of(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find position of a character.
- * @param __c Character to locate.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for the character
- * @a __c within this string. If found, returns the index
- * where it was found. If not found, returns npos.
- *
- * Note: equivalent to find(c, pos).
- */
- size_type
- find_first_of(_CharT __c, size_type __pos = 0) const
- { return this->find(__c, __pos); }
-
- /**
- * @brief Find last position of a character of string.
- * @param __str String containing characters to locate.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for one of the
- * characters of @a __str within this string. If found,
- * returns the index where it was found. If not found, returns
- * npos.
- */
- size_type
- find_last_of(const __versa_string& __str, size_type __pos = npos) const
- { return this->find_last_of(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find last position of a character of C substring.
- * @param __s C string containing characters to locate.
- * @param __pos Index of character to search back from.
- * @param __n Number of characters from s to search for.
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for one of the
- * first @a __n characters of @a __s within this string. If
- * found, returns the index where it was found. If not found,
- * returns npos.
- */
- size_type
- find_last_of(const _CharT* __s, size_type __pos, size_type __n) const;
-
- /**
- * @brief Find last position of a character of C string.
- * @param __s C string containing characters to locate.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for one of the
- * characters of @a __s within this string. If found, returns
- * the index where it was found. If not found, returns npos.
- */
- size_type
- find_last_of(const _CharT* __s, size_type __pos = npos) const
- {
- __glibcxx_requires_string(__s);
- return this->find_last_of(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find last position of a character.
- * @param __c Character to locate.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for @a __c within
- * this string. If found, returns the index where it was
- * found. If not found, returns npos.
- *
- * Note: equivalent to rfind(c, pos).
- */
- size_type
- find_last_of(_CharT __c, size_type __pos = npos) const
- { return this->rfind(__c, __pos); }
-
- /**
- * @brief Find position of a character not in string.
- * @param __str String containing characters to avoid.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for a character not
- * contained in @a __str within this string. If found, returns
- * the index where it was found. If not found, returns npos.
- */
- size_type
- find_first_not_of(const __versa_string& __str, size_type __pos = 0) const
- { return this->find_first_not_of(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find position of a character not in C substring.
- * @param __s C string containing characters to avoid.
- * @param __pos Index of character to search from.
- * @param __n Number of characters from s to consider.
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for a character not
- * contained in the first @a __n characters of @a __s within
- * this string. If found, returns the index where it was
- * found. If not found, returns npos.
- */
- size_type
- find_first_not_of(const _CharT* __s, size_type __pos,
- size_type __n) const;
-
- /**
- * @brief Find position of a character not in C string.
- * @param __s C string containing characters to avoid.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for a character not
- * contained in @a __s within this string. If found, returns
- * the index where it was found. If not found, returns npos.
- */
- size_type
- find_first_not_of(const _CharT* __s, size_type __pos = 0) const
- {
- __glibcxx_requires_string(__s);
- return this->find_first_not_of(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find position of a different character.
- * @param __c Character to avoid.
- * @param __pos Index of character to search from (default 0).
- * @return Index of first occurrence.
- *
- * Starting from @a __pos, searches forward for a character
- * other than @a __c within this string. If found, returns the
- * index where it was found. If not found, returns npos.
- */
- size_type
- find_first_not_of(_CharT __c, size_type __pos = 0) const;
-
- /**
- * @brief Find last position of a character not in string.
- * @param __str String containing characters to avoid.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for a character
- * not contained in @a __str within this string. If found,
- * returns the index where it was found. If not found, returns
- * npos.
- */
- size_type
- find_last_not_of(const __versa_string& __str,
- size_type __pos = npos) const
- { return this->find_last_not_of(__str.data(), __pos, __str.size()); }
-
- /**
- * @brief Find last position of a character not in C substring.
- * @param __s C string containing characters to avoid.
- * @param __pos Index of character to search back from.
- * @param __n Number of characters from s to consider.
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for a character
- * not contained in the first @a __n characters of @a __s
- * within this string. If found, returns the index where it
- * was found. If not found, returns npos.
- */
- size_type
- find_last_not_of(const _CharT* __s, size_type __pos,
- size_type __n) const;
- /**
- * @brief Find last position of a character not in C string.
- * @param __s C string containing characters to avoid.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for a character
- * not contained in @a __s within this string. If found,
- * returns the index where it was found. If not found, returns
- * npos.
- */
- size_type
- find_last_not_of(const _CharT* __s, size_type __pos = npos) const
- {
- __glibcxx_requires_string(__s);
- return this->find_last_not_of(__s, __pos, traits_type::length(__s));
- }
-
- /**
- * @brief Find last position of a different character.
- * @param __c Character to avoid.
- * @param __pos Index of character to search back from (default end).
- * @return Index of last occurrence.
- *
- * Starting from @a __pos, searches backward for a character
- * other than @a __c within this string. If found, returns the
- * index where it was found. If not found, returns npos.
- */
- size_type
- find_last_not_of(_CharT __c, size_type __pos = npos) const;
-
- /**
- * @brief Get a substring.
- * @param __pos Index of first character (default 0).
- * @param __n Number of characters in substring (default remainder).
- * @return The new string.
- * @throw std::out_of_range If pos > size().
- *
- * Construct and return a new string using the @a __n
- * characters starting at @a __pos. If the string is too
- * short, use the remainder of the characters. If @a __pos is
- * beyond the end of the string, out_of_range is thrown.
- */
- __versa_string
- substr(size_type __pos = 0, size_type __n = npos) const
- {
- return __versa_string(*this, _M_check(__pos, "__versa_string::substr"),
- __n);
- }
-
- /**
- * @brief Compare to a string.
- * @param __str String to compare against.
- * @return Integer < 0, 0, or > 0.
- *
- * Returns an integer < 0 if this string is ordered before @a
- * __str, 0 if their values are equivalent, or > 0 if this
- * string is ordered after @a __str. Determines the effective
- * length rlen of the strings to compare as the smallest of
- * size() and str.size(). The function then compares the two
- * strings by calling traits::compare(data(), str.data(),rlen).
- * If the result of the comparison is nonzero returns it,
- * otherwise the shorter one is ordered first.
- */
- int
- compare(const __versa_string& __str) const
- {
- if (this->_M_compare(__str))
- return 0;
-
- const size_type __size = this->size();
- const size_type __osize = __str.size();
- const size_type __len = std::min(__size, __osize);
-
- int __r = traits_type::compare(this->_M_data(), __str.data(), __len);
- if (!__r)
- __r = this->_S_compare(__size, __osize);
- return __r;
- }
-
- /**
- * @brief Compare substring to a string.
- * @param __pos Index of first character of substring.
- * @param __n Number of characters in substring.
- * @param __str String to compare against.
- * @return Integer < 0, 0, or > 0.
- *
- * Form the substring of this string from the @a __n characters
- * starting at @a __pos. Returns an integer < 0 if the
- * substring is ordered before @a __str, 0 if their values are
- * equivalent, or > 0 if the substring is ordered after @a
- * __str. Determines the effective length rlen of the strings
- * to compare as the smallest of the length of the substring
- * and @a __str.size(). The function then compares the two
- * strings by calling
- * traits::compare(substring.data(),str.data(),rlen). If the
- * result of the comparison is nonzero returns it, otherwise
- * the shorter one is ordered first.
- */
- int
- compare(size_type __pos, size_type __n,
- const __versa_string& __str) const;
-
- /**
- * @brief Compare substring to a substring.
- * @param __pos1 Index of first character of substring.
- * @param __n1 Number of characters in substring.
- * @param __str String to compare against.
- * @param __pos2 Index of first character of substring of str.
- * @param __n2 Number of characters in substring of str.
- * @return Integer < 0, 0, or > 0.
- *
- * Form the substring of this string from the @a __n1
- * characters starting at @a __pos1. Form the substring of @a
- * __str from the @a __n2 characters starting at @a __pos2.
- * Returns an integer < 0 if this substring is ordered before
- * the substring of @a __str, 0 if their values are equivalent,
- * or > 0 if this substring is ordered after the substring of
- * @a __str. Determines the effective length rlen of the
- * strings to compare as the smallest of the lengths of the
- * substrings. The function then compares the two strings by
- * calling
- * traits::compare(substring.data(),str.substr(pos2,n2).data(),rlen).
- * If the result of the comparison is nonzero returns it,
- * otherwise the shorter one is ordered first.
- */
- int
- compare(size_type __pos1, size_type __n1, const __versa_string& __str,
- size_type __pos2, size_type __n2) const;
-
- /**
- * @brief Compare to a C string.
- * @param __s C string to compare against.
- * @return Integer < 0, 0, or > 0.
- *
- * Returns an integer < 0 if this string is ordered before @a
- * __s, 0 if their values are equivalent, or > 0 if this string
- * is ordered after @a __s. Determines the effective length
- * rlen of the strings to compare as the smallest of size() and
- * the length of a string constructed from @a __s. The
- * function then compares the two strings by calling
- * traits::compare(data(),s,rlen). If the result of the
- * comparison is nonzero returns it, otherwise the shorter one
- * is ordered first.
- */
- int
- compare(const _CharT* __s) const;
-
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 5 String::compare specification questionable
- /**
- * @brief Compare substring to a C string.
- * @param __pos Index of first character of substring.
- * @param __n1 Number of characters in substring.
- * @param __s C string to compare against.
- * @return Integer < 0, 0, or > 0.
- *
- * Form the substring of this string from the @a __n1
- * characters starting at @a __pos. Returns an integer < 0 if
- * the substring is ordered before @a __s, 0 if their values
- * are equivalent, or > 0 if the substring is ordered after @a
- * __s. Determines the effective length rlen of the strings to
- * compare as the smallest of the length of the substring and
- * the length of a string constructed from @a __s. The
- * function then compares the two string by calling
- * traits::compare(substring.data(),s,rlen). If the result of
- * the comparison is nonzero returns it, otherwise the shorter
- * one is ordered first.
- */
- int
- compare(size_type __pos, size_type __n1, const _CharT* __s) const;
-
- /**
- * @brief Compare substring against a character array.
- * @param __pos1 Index of first character of substring.
- * @param __n1 Number of characters in substring.
- * @param __s character array to compare against.
- * @param __n2 Number of characters of s.
- * @return Integer < 0, 0, or > 0.
- *
- * Form the substring of this string from the @a __n1
- * characters starting at @a __pos1. Form a string from the
- * first @a __n2 characters of @a __s. Returns an integer < 0
- * if this substring is ordered before the string from @a __s,
- * 0 if their values are equivalent, or > 0 if this substring
- * is ordered after the string from @a __s. Determines the
- * effective length rlen of the strings to compare as the
- * smallest of the length of the substring and @a __n2. The
- * function then compares the two strings by calling
- * traits::compare(substring.data(),s,rlen). If the result of
- * the comparison is nonzero returns it, otherwise the shorter
- * one is ordered first.
- *
- * NB: s must have at least n2 characters, '\\0' has no special
- * meaning.
- */
- int
- compare(size_type __pos, size_type __n1, const _CharT* __s,
- size_type __n2) const;
- };
-
- // operator+
- /**
- * @brief Concatenate two strings.
- * @param __lhs First string.
- * @param __rhs Last string.
- * @return New string with value of @a __lhs followed by @a __rhs.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
-
- /**
- * @brief Concatenate C string and string.
- * @param __lhs First string.
- * @param __rhs Last string.
- * @return New string with value of @a __lhs followed by @a __rhs.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
-
- /**
- * @brief Concatenate character and string.
- * @param __lhs First string.
- * @param __rhs Last string.
- * @return New string with @a __lhs followed by @a __rhs.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(_CharT __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs);
-
- /**
- * @brief Concatenate string and C string.
- * @param __lhs First string.
- * @param __rhs Last string.
- * @return New string with @a __lhs followed by @a __rhs.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs);
-
- /**
- * @brief Concatenate string and character.
- * @param __lhs First string.
- * @param __rhs Last string.
- * @return New string with @a __lhs followed by @a __rhs.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- _CharT __rhs);
-
- // operator ==
- /**
- * @brief Test equivalence of two strings.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs.compare(@a __rhs) == 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator==(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __lhs.compare(__rhs) == 0; }
-
- template<typename _CharT,
- template <typename, typename, typename> class _Base>
- inline typename __enable_if<std::__is_char<_CharT>::__value, bool>::__type
- operator==(const __versa_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT>, _Base>& __lhs,
- const __versa_string<_CharT, std::char_traits<_CharT>,
- std::allocator<_CharT>, _Base>& __rhs)
- { return (__lhs.size() == __rhs.size()
- && !std::char_traits<_CharT>::compare(__lhs.data(), __rhs.data(),
- __lhs.size())); }
-
- /**
- * @brief Test equivalence of C string and string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __rhs.compare(@a __lhs) == 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator==(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __rhs.compare(__lhs) == 0; }
-
- /**
- * @brief Test equivalence of string and C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs.compare(@a __rhs) == 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator==(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return __lhs.compare(__rhs) == 0; }
-
- // operator !=
- /**
- * @brief Test difference of two strings.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs.compare(@a __rhs) != 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator!=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return !(__lhs == __rhs); }
-
- /**
- * @brief Test difference of C string and string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __rhs.compare(@a __lhs) != 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator!=(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return !(__lhs == __rhs); }
-
- /**
- * @brief Test difference of string and C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs.compare(@a __rhs) != 0. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator!=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return !(__lhs == __rhs); }
-
- // operator <
- /**
- * @brief Test if string precedes string.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs precedes @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __lhs.compare(__rhs) < 0; }
-
- /**
- * @brief Test if string precedes C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs precedes @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return __lhs.compare(__rhs) < 0; }
-
- /**
- * @brief Test if C string precedes string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __lhs precedes @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __rhs.compare(__lhs) > 0; }
-
- // operator >
- /**
- * @brief Test if string follows string.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs follows @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __lhs.compare(__rhs) > 0; }
-
- /**
- * @brief Test if string follows C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs follows @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return __lhs.compare(__rhs) > 0; }
-
- /**
- * @brief Test if C string follows string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __lhs follows @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __rhs.compare(__lhs) < 0; }
-
- // operator <=
- /**
- * @brief Test if string doesn't follow string.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs doesn't follow @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __lhs.compare(__rhs) <= 0; }
-
- /**
- * @brief Test if string doesn't follow C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs doesn't follow @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return __lhs.compare(__rhs) <= 0; }
-
- /**
- * @brief Test if C string doesn't follow string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __lhs doesn't follow @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator<=(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __rhs.compare(__lhs) >= 0; }
-
- // operator >=
- /**
- * @brief Test if string doesn't precede string.
- * @param __lhs First string.
- * @param __rhs Second string.
- * @return True if @a __lhs doesn't precede @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __lhs.compare(__rhs) >= 0; }
-
- /**
- * @brief Test if string doesn't precede C string.
- * @param __lhs String.
- * @param __rhs C string.
- * @return True if @a __lhs doesn't precede @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>=(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- { return __lhs.compare(__rhs) >= 0; }
-
- /**
- * @brief Test if C string doesn't precede string.
- * @param __lhs C string.
- * @param __rhs String.
- * @return True if @a __lhs doesn't precede @a __rhs. False otherwise.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline bool
- operator>=(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { return __rhs.compare(__lhs) <= 0; }
-
- /**
- * @brief Swap contents of two strings.
- * @param __lhs First string.
- * @param __rhs Second string.
- *
- * Exchanges the contents of @a __lhs and @a __rhs in constant time.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline void
- swap(__versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { __lhs.swap(__rhs); }
-
-#ifdef __GXX_EXPERIMENTAL_CXX0X__
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline void
- swap(__versa_string<_CharT, _Traits, _Alloc, _Base>&& __lhs,
- __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- { __lhs.swap(__rhs); }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline void
- swap(__versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- __versa_string<_CharT, _Traits, _Alloc, _Base>&& __rhs)
- { __lhs.swap(__rhs); }
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- /**
- * @brief Read stream into a string.
- * @param __is Input stream.
- * @param __str Buffer to store into.
- * @return Reference to the input stream.
- *
- * Stores characters from @a __is into @a __str until whitespace is
- * found, the end of the stream is encountered, or str.max_size()
- * is reached. If is.width() is non-zero, that is the limit on the
- * number of characters stored into @a __str. Any previous
- * contents of @a __str are erased.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- basic_istream<_CharT, _Traits>&
- operator>>(basic_istream<_CharT, _Traits>& __is,
- __gnu_cxx::__versa_string<_CharT, _Traits,
- _Alloc, _Base>& __str);
-
- /**
- * @brief Write string to a stream.
- * @param __os Output stream.
- * @param __str String to write out.
- * @return Reference to the output stream.
- *
- * Output characters of @a __str into os following the same rules as for
- * writing a C string.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline basic_ostream<_CharT, _Traits>&
- operator<<(basic_ostream<_CharT, _Traits>& __os,
- const __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc,
- _Base>& __str)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 586. string inserter not a formatted function
- return __ostream_insert(__os, __str.data(), __str.size());
- }
-
- /**
- * @brief Read a line from stream into a string.
- * @param __is Input stream.
- * @param __str Buffer to store into.
- * @param __delim Character marking end of line.
- * @return Reference to the input stream.
- *
- * Stores characters from @a __is into @a __str until @a __delim is
- * found, the end of the stream is encountered, or str.max_size()
- * is reached. If is.width() is non-zero, that is the limit on the
- * number of characters stored into @a __str. Any previous
- * contents of @a __str are erased. If @a delim was encountered,
- * it is extracted but not stored into @a __str.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- basic_istream<_CharT, _Traits>&
- getline(basic_istream<_CharT, _Traits>& __is,
- __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str,
- _CharT __delim);
-
- /**
- * @brief Read a line from stream into a string.
- * @param __is Input stream.
- * @param __str Buffer to store into.
- * @return Reference to the input stream.
- *
- * Stores characters from is into @a __str until '\n' is found, the
- * end of the stream is encountered, or str.max_size() is reached.
- * If is.width() is non-zero, that is the limit on the number of
- * characters stored into @a __str. Any previous contents of @a
- * __str are erased. If end of line was encountered, it is
- * extracted but not stored into @a __str.
- */
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- inline basic_istream<_CharT, _Traits>&
- getline(basic_istream<_CharT, _Traits>& __is,
- __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str)
- { return getline(__is, __str, __is.widen('\n')); }
-
-_GLIBCXX_END_NAMESPACE
-
-#if (defined(__GXX_EXPERIMENTAL_CXX0X__) && defined(_GLIBCXX_USE_C99))
-
-#include <ext/string_conversions.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- // 21.4 Numeric Conversions [string.conversions].
- inline int
- stoi(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa<long, int>(&std::strtol, "stoi", __str.c_str(),
- __idx, __base); }
-
- inline long
- stol(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::strtol, "stol", __str.c_str(),
- __idx, __base); }
-
- inline unsigned long
- stoul(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::strtoul, "stoul", __str.c_str(),
- __idx, __base); }
-
- inline long long
- stoll(const __vstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::strtoll, "stoll", __str.c_str(),
- __idx, __base); }
-
- inline unsigned long long
- stoull(const __vstring& __str, std::size_t* __idx, int __base = 10)
- { return __gnu_cxx::__stoa(&std::strtoull, "stoull", __str.c_str(),
- __idx, __base); }
-
- // NB: strtof vs strtod.
- inline float
- stof(const __vstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::strtof, "stof", __str.c_str(), __idx); }
-
- inline double
- stod(const __vstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::strtod, "stod", __str.c_str(), __idx); }
-
- inline long double
- stold(const __vstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::strtold, "stold", __str.c_str(), __idx); }
-
- // NB: (v)snprintf vs sprintf.
- inline __vstring
- to_string(long long __val)
- { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
- 4 * sizeof(long long),
- "%lld", __val); }
-
- inline __vstring
- to_string(unsigned long long __val)
- { return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf,
- 4 * sizeof(unsigned long long),
- "%llu", __val); }
-
- inline __vstring
- to_string(long double __val)
- {
- const int __n = __numeric_traits<long double>::__max_exponent10 + 20;
- return __gnu_cxx::__to_xstring<__vstring>(&std::vsnprintf, __n,
- "%Lf", __val);
- }
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- inline int
- stoi(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa<long, int>(&std::wcstol, "stoi", __str.c_str(),
- __idx, __base); }
-
- inline long
- stol(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::wcstol, "stol", __str.c_str(),
- __idx, __base); }
-
- inline unsigned long
- stoul(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::wcstoul, "stoul", __str.c_str(),
- __idx, __base); }
-
- inline long long
- stoll(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::wcstoll, "stoll", __str.c_str(),
- __idx, __base); }
-
- inline unsigned long long
- stoull(const __wvstring& __str, std::size_t* __idx = 0, int __base = 10)
- { return __gnu_cxx::__stoa(&std::wcstoull, "stoull", __str.c_str(),
- __idx, __base); }
-
- // NB: wcstof vs wcstod.
- inline float
- stof(const __wvstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::wcstof, "stof", __str.c_str(), __idx); }
-
- inline double
- stod(const __wvstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::wcstod, "stod", __str.c_str(), __idx); }
-
- inline long double
- stold(const __wvstring& __str, std::size_t* __idx = 0)
- { return __gnu_cxx::__stoa(&std::wcstold, "stold", __str.c_str(), __idx); }
-
- inline __wvstring
- to_wstring(long long __val)
- { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
- 4 * sizeof(long long),
- L"%lld", __val); }
-
- inline __wvstring
- to_wstring(unsigned long long __val)
- { return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf,
- 4 * sizeof(unsigned long long),
- L"%llu", __val); }
-
- inline __wvstring
- to_wstring(long double __val)
- {
- const int __n = __numeric_traits<long double>::__max_exponent10 + 20;
- return __gnu_cxx::__to_xstring<__wvstring>(&std::vswprintf, __n,
- L"%Lf", __val);
- }
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif
-
-#ifndef _GLIBCXX_EXPORT_TEMPLATE
-# include "vstring.tcc"
-#endif
-
-#if __google_stl_debug_string && !defined(_GLIBCXX_DEBUG)
-// Undo our defines, so they don't affect anything else.
-# undef _GLIBCXX_DEBUG_ASSERT
-# undef _GLIBCXX_DEBUG_PEDASSERT
-# define _GLIBCXX_DEBUG_ASSERT(_Condition)
-# define _GLIBCXX_DEBUG_PEDASSERT(_Condition)
-#endif
-
-#endif /* _VSTRING_H */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/vstring.tcc b/gcc-4.4.3/libstdc++-v3/include/ext/vstring.tcc
deleted file mode 100644
index 2c3a8e276..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/vstring.tcc
+++ /dev/null
@@ -1,696 +0,0 @@
-// Versatile string -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/vstring.tcc
- * This file is a GNU extension to the Standard C++ Library.
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _VSTRING_TCC
-#define _VSTRING_TCC 1
-
-#pragma GCC system_header
-
-#include <cxxabi-forced.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- const typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::npos;
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- void
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- resize(size_type __n, _CharT __c)
- {
- const size_type __size = this->size();
- if (__size < __n)
- this->append(__n - __size, __c);
- else if (__n < __size)
- this->_M_erase(__n, __size - __n);
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>&
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- _M_append(const _CharT* __s, size_type __n)
- {
- const size_type __len = __n + this->size();
-
- if (__len <= this->capacity() && !this->_M_is_shared())
- {
- if (__n)
- this->_S_copy(this->_M_data() + this->size(), __s, __n);
- }
- else
- this->_M_mutate(this->size(), size_type(0), __s, __n);
-
- this->_M_set_length(__len);
- return *this;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- template<typename _InputIterator>
- __versa_string<_CharT, _Traits, _Alloc, _Base>&
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- _M_replace_dispatch(iterator __i1, iterator __i2, _InputIterator __k1,
- _InputIterator __k2, std::__false_type)
- {
- const __versa_string __s(__k1, __k2);
- const size_type __n1 = __i2 - __i1;
- return _M_replace(__i1 - _M_ibegin(), __n1, __s._M_data(),
- __s.size());
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>&
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- _M_replace_aux(size_type __pos1, size_type __n1, size_type __n2,
- _CharT __c)
- {
- _M_check_length(__n1, __n2, "__versa_string::_M_replace_aux");
-
- const size_type __old_size = this->size();
- const size_type __new_size = __old_size + __n2 - __n1;
-
- if (__new_size <= this->capacity() && !this->_M_is_shared())
- {
- _CharT* __p = this->_M_data() + __pos1;
-
- const size_type __how_much = __old_size - __pos1 - __n1;
- if (__how_much && __n1 != __n2)
- this->_S_move(__p + __n2, __p + __n1, __how_much);
- }
- else
- this->_M_mutate(__pos1, __n1, 0, __n2);
-
- if (__n2)
- this->_S_assign(this->_M_data() + __pos1, __n2, __c);
-
- this->_M_set_length(__new_size);
- return *this;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>&
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- _M_replace(size_type __pos, size_type __len1, const _CharT* __s,
- const size_type __len2)
- {
- _M_check_length(__len1, __len2, "__versa_string::_M_replace");
-
- const size_type __old_size = this->size();
- const size_type __new_size = __old_size + __len2 - __len1;
-
- if (__new_size <= this->capacity() && !this->_M_is_shared())
- {
- _CharT* __p = this->_M_data() + __pos;
-
- const size_type __how_much = __old_size - __pos - __len1;
- if (_M_disjunct(__s))
- {
- if (__how_much && __len1 != __len2)
- this->_S_move(__p + __len2, __p + __len1, __how_much);
- if (__len2)
- this->_S_copy(__p, __s, __len2);
- }
- else
- {
- // Work in-place.
- if (__len2 && __len2 <= __len1)
- this->_S_move(__p, __s, __len2);
- if (__how_much && __len1 != __len2)
- this->_S_move(__p + __len2, __p + __len1, __how_much);
- if (__len2 > __len1)
- {
- if (__s + __len2 <= __p + __len1)
- this->_S_move(__p, __s, __len2);
- else if (__s >= __p + __len1)
- this->_S_copy(__p, __s + __len2 - __len1, __len2);
- else
- {
- const size_type __nleft = (__p + __len1) - __s;
- this->_S_move(__p, __s, __nleft);
- this->_S_copy(__p + __nleft, __p + __len2,
- __len2 - __nleft);
- }
- }
- }
- }
- else
- this->_M_mutate(__pos, __len1, __s, __len2);
-
- this->_M_set_length(__new_size);
- return *this;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- {
- __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
- __str.reserve(__lhs.size() + __rhs.size());
- __str.append(__lhs);
- __str.append(__rhs);
- return __str;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const _CharT* __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- {
- __glibcxx_requires_string(__lhs);
- typedef __versa_string<_CharT, _Traits, _Alloc, _Base> __string_type;
- typedef typename __string_type::size_type __size_type;
- const __size_type __len = _Traits::length(__lhs);
- __string_type __str;
- __str.reserve(__len + __rhs.size());
- __str.append(__lhs, __len);
- __str.append(__rhs);
- return __str;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(_CharT __lhs,
- const __versa_string<_CharT, _Traits, _Alloc, _Base>& __rhs)
- {
- __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
- __str.reserve(__rhs.size() + 1);
- __str.push_back(__lhs);
- __str.append(__rhs);
- return __str;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- const _CharT* __rhs)
- {
- __glibcxx_requires_string(__rhs);
- typedef __versa_string<_CharT, _Traits, _Alloc, _Base> __string_type;
- typedef typename __string_type::size_type __size_type;
- const __size_type __len = _Traits::length(__rhs);
- __string_type __str;
- __str.reserve(__lhs.size() + __len);
- __str.append(__lhs);
- __str.append(__rhs, __len);
- return __str;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- __versa_string<_CharT, _Traits, _Alloc, _Base>
- operator+(const __versa_string<_CharT, _Traits, _Alloc, _Base>& __lhs,
- _CharT __rhs)
- {
- __versa_string<_CharT, _Traits, _Alloc, _Base> __str;
- __str.reserve(__lhs.size() + 1);
- __str.append(__lhs);
- __str.push_back(__rhs);
- return __str;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- copy(_CharT* __s, size_type __n, size_type __pos) const
- {
- _M_check(__pos, "__versa_string::copy");
- __n = _M_limit(__pos, __n);
- __glibcxx_requires_string_len(__s, __n);
- if (__n)
- this->_S_copy(__s, this->_M_data() + __pos, __n);
- // 21.3.5.7 par 3: do not append null. (good.)
- return __n;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- const size_type __size = this->size();
- const _CharT* __data = this->_M_data();
-
- if (__n == 0)
- return __pos <= __size ? __pos : npos;
-
- if (__n <= __size)
- {
- for (; __pos <= __size - __n; ++__pos)
- if (traits_type::eq(__data[__pos], __s[0])
- && traits_type::compare(__data + __pos + 1,
- __s + 1, __n - 1) == 0)
- return __pos;
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find(_CharT __c, size_type __pos) const
- {
- size_type __ret = npos;
- const size_type __size = this->size();
- if (__pos < __size)
- {
- const _CharT* __data = this->_M_data();
- const size_type __n = __size - __pos;
- const _CharT* __p = traits_type::find(__data + __pos, __n, __c);
- if (__p)
- __ret = __p - __data;
- }
- return __ret;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- rfind(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- const size_type __size = this->size();
- if (__n <= __size)
- {
- __pos = std::min(size_type(__size - __n), __pos);
- const _CharT* __data = this->_M_data();
- do
- {
- if (traits_type::compare(__data + __pos, __s, __n) == 0)
- return __pos;
- }
- while (__pos-- > 0);
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- rfind(_CharT __c, size_type __pos) const
- {
- size_type __size = this->size();
- if (__size)
- {
- if (--__size > __pos)
- __size = __pos;
- for (++__size; __size-- > 0; )
- if (traits_type::eq(this->_M_data()[__size], __c))
- return __size;
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_first_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- for (; __n && __pos < this->size(); ++__pos)
- {
- const _CharT* __p = traits_type::find(__s, __n,
- this->_M_data()[__pos]);
- if (__p)
- return __pos;
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_last_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- size_type __size = this->size();
- if (__size && __n)
- {
- if (--__size > __pos)
- __size = __pos;
- do
- {
- if (traits_type::find(__s, __n, this->_M_data()[__size]))
- return __size;
- }
- while (__size-- != 0);
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_first_not_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- for (; __pos < this->size(); ++__pos)
- if (!traits_type::find(__s, __n, this->_M_data()[__pos]))
- return __pos;
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_first_not_of(_CharT __c, size_type __pos) const
- {
- for (; __pos < this->size(); ++__pos)
- if (!traits_type::eq(this->_M_data()[__pos], __c))
- return __pos;
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_last_not_of(const _CharT* __s, size_type __pos, size_type __n) const
- {
- __glibcxx_requires_string_len(__s, __n);
- size_type __size = this->size();
- if (__size)
- {
- if (--__size > __pos)
- __size = __pos;
- do
- {
- if (!traits_type::find(__s, __n, this->_M_data()[__size]))
- return __size;
- }
- while (__size--);
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- typename __versa_string<_CharT, _Traits, _Alloc, _Base>::size_type
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- find_last_not_of(_CharT __c, size_type __pos) const
- {
- size_type __size = this->size();
- if (__size)
- {
- if (--__size > __pos)
- __size = __pos;
- do
- {
- if (!traits_type::eq(this->_M_data()[__size], __c))
- return __size;
- }
- while (__size--);
- }
- return npos;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- int
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- compare(size_type __pos, size_type __n, const __versa_string& __str) const
- {
- _M_check(__pos, "__versa_string::compare");
- __n = _M_limit(__pos, __n);
- const size_type __osize = __str.size();
- const size_type __len = std::min(__n, __osize);
- int __r = traits_type::compare(this->_M_data() + __pos,
- __str.data(), __len);
- if (!__r)
- __r = this->_S_compare(__n, __osize);
- return __r;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- int
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- compare(size_type __pos1, size_type __n1, const __versa_string& __str,
- size_type __pos2, size_type __n2) const
- {
- _M_check(__pos1, "__versa_string::compare");
- __str._M_check(__pos2, "__versa_string::compare");
- __n1 = _M_limit(__pos1, __n1);
- __n2 = __str._M_limit(__pos2, __n2);
- const size_type __len = std::min(__n1, __n2);
- int __r = traits_type::compare(this->_M_data() + __pos1,
- __str.data() + __pos2, __len);
- if (!__r)
- __r = this->_S_compare(__n1, __n2);
- return __r;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- int
- __versa_string<_CharT, _Traits, _Alloc, _Base>::
- compare(const _CharT* __s) const
- {
- __glibcxx_requires_string(__s);
- const size_type __size = this->size();
- const size_type __osize = traits_type::length(__s);
- const size_type __len = std::min(__size, __osize);
- int __r = traits_type::compare(this->_M_data(), __s, __len);
- if (!__r)
- __r = this->_S_compare(__size, __osize);
- return __r;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- int
- __versa_string <_CharT, _Traits, _Alloc, _Base>::
- compare(size_type __pos, size_type __n1, const _CharT* __s) const
- {
- __glibcxx_requires_string(__s);
- _M_check(__pos, "__versa_string::compare");
- __n1 = _M_limit(__pos, __n1);
- const size_type __osize = traits_type::length(__s);
- const size_type __len = std::min(__n1, __osize);
- int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
- if (!__r)
- __r = this->_S_compare(__n1, __osize);
- return __r;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- int
- __versa_string <_CharT, _Traits, _Alloc, _Base>::
- compare(size_type __pos, size_type __n1, const _CharT* __s,
- size_type __n2) const
- {
- __glibcxx_requires_string_len(__s, __n2);
- _M_check(__pos, "__versa_string::compare");
- __n1 = _M_limit(__pos, __n1);
- const size_type __len = std::min(__n1, __n2);
- int __r = traits_type::compare(this->_M_data() + __pos, __s, __len);
- if (!__r)
- __r = this->_S_compare(__n1, __n2);
- return __r;
- }
-
-_GLIBCXX_END_NAMESPACE
-
-_GLIBCXX_BEGIN_NAMESPACE(std)
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- basic_istream<_CharT, _Traits>&
- operator>>(basic_istream<_CharT, _Traits>& __in,
- __gnu_cxx::__versa_string<_CharT, _Traits,
- _Alloc, _Base>& __str)
- {
- typedef basic_istream<_CharT, _Traits> __istream_type;
- typedef typename __istream_type::ios_base __ios_base;
- typedef __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>
- __string_type;
- typedef typename __istream_type::int_type __int_type;
- typedef typename __string_type::size_type __size_type;
- typedef ctype<_CharT> __ctype_type;
- typedef typename __ctype_type::ctype_base __ctype_base;
-
- __size_type __extracted = 0;
- typename __ios_base::iostate __err = __ios_base::goodbit;
- typename __istream_type::sentry __cerb(__in, false);
- if (__cerb)
- {
- __try
- {
- // Avoid reallocation for common case.
- __str.erase();
- _CharT __buf[128];
- __size_type __len = 0;
- const streamsize __w = __in.width();
- const __size_type __n = __w > 0 ? static_cast<__size_type>(__w)
- : __str.max_size();
- const __ctype_type& __ct = use_facet<__ctype_type>(__in.getloc());
- const __int_type __eof = _Traits::eof();
- __int_type __c = __in.rdbuf()->sgetc();
-
- while (__extracted < __n
- && !_Traits::eq_int_type(__c, __eof)
- && !__ct.is(__ctype_base::space,
- _Traits::to_char_type(__c)))
- {
- if (__len == sizeof(__buf) / sizeof(_CharT))
- {
- __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
- __len = 0;
- }
- __buf[__len++] = _Traits::to_char_type(__c);
- ++__extracted;
- __c = __in.rdbuf()->snextc();
- }
- __str.append(__buf, __len);
-
- if (_Traits::eq_int_type(__c, __eof))
- __err |= __ios_base::eofbit;
- __in.width(0);
- }
- __catch(__cxxabiv1::__forced_unwind&)
- {
- __in._M_setstate(__ios_base::badbit);
- __throw_exception_again;
- }
- __catch(...)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 91. Description of operator>> and getline() for string<>
- // might cause endless loop
- __in._M_setstate(__ios_base::badbit);
- }
- }
- // 211. operator>>(istream&, string&) doesn't set failbit
- if (!__extracted)
- __err |= __ios_base::failbit;
- if (__err)
- __in.setstate(__err);
- return __in;
- }
-
- template<typename _CharT, typename _Traits, typename _Alloc,
- template <typename, typename, typename> class _Base>
- basic_istream<_CharT, _Traits>&
- getline(basic_istream<_CharT, _Traits>& __in,
- __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>& __str,
- _CharT __delim)
- {
- typedef basic_istream<_CharT, _Traits> __istream_type;
- typedef typename __istream_type::ios_base __ios_base;
- typedef __gnu_cxx::__versa_string<_CharT, _Traits, _Alloc, _Base>
- __string_type;
- typedef typename __istream_type::int_type __int_type;
- typedef typename __string_type::size_type __size_type;
-
- __size_type __extracted = 0;
- const __size_type __n = __str.max_size();
- typename __ios_base::iostate __err = __ios_base::goodbit;
- typename __istream_type::sentry __cerb(__in, true);
- if (__cerb)
- {
- __try
- {
- // Avoid reallocation for common case.
- __str.erase();
- _CharT __buf[128];
- __size_type __len = 0;
- const __int_type __idelim = _Traits::to_int_type(__delim);
- const __int_type __eof = _Traits::eof();
- __int_type __c = __in.rdbuf()->sgetc();
-
- while (__extracted < __n
- && !_Traits::eq_int_type(__c, __eof)
- && !_Traits::eq_int_type(__c, __idelim))
- {
- if (__len == sizeof(__buf) / sizeof(_CharT))
- {
- __str.append(__buf, sizeof(__buf) / sizeof(_CharT));
- __len = 0;
- }
- __buf[__len++] = _Traits::to_char_type(__c);
- ++__extracted;
- __c = __in.rdbuf()->snextc();
- }
- __str.append(__buf, __len);
-
- if (_Traits::eq_int_type(__c, __eof))
- __err |= __ios_base::eofbit;
- else if (_Traits::eq_int_type(__c, __idelim))
- {
- ++__extracted;
- __in.rdbuf()->sbumpc();
- }
- else
- __err |= __ios_base::failbit;
- }
- __catch(__cxxabiv1::__forced_unwind&)
- {
- __in._M_setstate(__ios_base::badbit);
- __throw_exception_again;
- }
- __catch(...)
- {
- // _GLIBCXX_RESOLVE_LIB_DEFECTS
- // 91. Description of operator>> and getline() for string<>
- // might cause endless loop
- __in._M_setstate(__ios_base::badbit);
- }
- }
- if (!__extracted)
- __err |= __ios_base::failbit;
- if (__err)
- __in.setstate(__err);
- return __in;
- }
-
-_GLIBCXX_END_NAMESPACE
-
-#endif // _VSTRING_TCC
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/vstring_fwd.h b/gcc-4.4.3/libstdc++-v3/include/ext/vstring_fwd.h
deleted file mode 100644
index c2a31d4af..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/vstring_fwd.h
+++ /dev/null
@@ -1,87 +0,0 @@
-// Versatile string forward -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/vstring_fwd.h
- * This file is a GNU extension to the Standard C++ Library.
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _VSTRING_FWD_H
-#define _VSTRING_FWD_H 1
-
-#pragma GCC system_header
-
-#include <bits/c++config.h>
-#include <bits/char_traits.h>
-#include <bits/allocator.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- class __sso_string_base;
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- class __rc_string_base;
-
- template<typename _CharT, typename _Traits = std::char_traits<_CharT>,
- typename _Alloc = std::allocator<_CharT>,
- template
- <typename, typename, typename> class _Base = __sso_string_base>
- class __versa_string;
-
- typedef __versa_string<char> __vstring;
- typedef __vstring __sso_string;
- typedef
- __versa_string<char, std::char_traits<char>,
- std::allocator<char>, __rc_string_base> __rc_string;
-
-#ifdef _GLIBCXX_USE_WCHAR_T
- typedef __versa_string<wchar_t> __wvstring;
- typedef __wvstring __wsso_string;
- typedef
- __versa_string<wchar_t, std::char_traits<wchar_t>,
- std::allocator<wchar_t>, __rc_string_base> __wrc_string;
-#endif
-
-#if (defined(__GXX_EXPERIMENTAL_CXX0X__) \
- && defined(_GLIBCXX_USE_C99_STDINT_TR1))
-
- typedef __versa_string<char16_t> __u16vstring;
- typedef __u16vstring __u16sso_string;
- typedef
- __versa_string<char16_t, std::char_traits<char16_t>,
- std::allocator<char16_t>, __rc_string_base> __u16rc_string;
-
- typedef __versa_string<char32_t> __u32vstring;
- typedef __u32vstring __u32sso_string;
- typedef
- __versa_string<char32_t, std::char_traits<char32_t>,
- std::allocator<char32_t>, __rc_string_base> __u32rc_string;
-
-#endif
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _VSTRING_FWD_H */
diff --git a/gcc-4.4.3/libstdc++-v3/include/ext/vstring_util.h b/gcc-4.4.3/libstdc++-v3/include/ext/vstring_util.h
deleted file mode 100644
index 4042f7069..000000000
--- a/gcc-4.4.3/libstdc++-v3/include/ext/vstring_util.h
+++ /dev/null
@@ -1,180 +0,0 @@
-// Versatile string utility -*- C++ -*-
-
-// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc.
-//
-// This file is part of the GNU ISO C++ Library. This library is free
-// software; you can redistribute it and/or modify it under the
-// terms of the GNU General Public License as published by the
-// Free Software Foundation; either version 3, or (at your option)
-// any later version.
-
-// This library is distributed in the hope that it will be useful,
-// but WITHOUT ANY WARRANTY; without even the implied warranty of
-// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-// GNU General Public License for more details.
-
-// Under Section 7 of GPL version 3, you are granted additional
-// permissions described in the GCC Runtime Library Exception, version
-// 3.1, as published by the Free Software Foundation.
-
-// You should have received a copy of the GNU General Public License and
-// a copy of the GCC Runtime Library Exception along with this program;
-// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see
-// <http://www.gnu.org/licenses/>.
-
-/** @file ext/vstring_util.h
- * This file is a GNU extension to the Standard C++ Library.
- * This is an internal header file, included by other library headers.
- * You should not attempt to use it directly.
- */
-
-#ifndef _VSTRING_UTIL_H
-#define _VSTRING_UTIL_H 1
-
-#pragma GCC system_header
-
-#include <ext/vstring_fwd.h>
-#include <debug/debug.h>
-#include <bits/stl_function.h> // For less
-#include <bits/functexcept.h>
-#include <bits/localefwd.h>
-#include <bits/ostream_insert.h>
-#include <bits/stl_iterator.h>
-#include <ext/numeric_traits.h>
-#include <bits/move.h>
-
-_GLIBCXX_BEGIN_NAMESPACE(__gnu_cxx)
-
- template<typename _CharT, typename _Traits, typename _Alloc>
- struct __vstring_utility
- {
- typedef typename _Alloc::template rebind<_CharT>::other _CharT_alloc_type;
-
- typedef _Traits traits_type;
- typedef typename _Traits::char_type value_type;
- typedef typename _CharT_alloc_type::size_type size_type;
- typedef typename _CharT_alloc_type::difference_type difference_type;
- typedef typename _CharT_alloc_type::pointer pointer;
- typedef typename _CharT_alloc_type::const_pointer const_pointer;
-
- // For __sso_string.
- typedef __gnu_cxx::
- __normal_iterator<pointer, __gnu_cxx::
- __versa_string<_CharT, _Traits, _Alloc,
- __sso_string_base> >
- __sso_iterator;
- typedef __gnu_cxx::
- __normal_iterator<const_pointer, __gnu_cxx::
- __versa_string<_CharT, _Traits, _Alloc,
- __sso_string_base> >
- __const_sso_iterator;
-
- // For __rc_string.
- typedef __gnu_cxx::
- __normal_iterator<pointer, __gnu_cxx::
- __versa_string<_CharT, _Traits, _Alloc,
- __rc_string_base> >
- __rc_iterator;
- typedef __gnu_cxx::
- __normal_iterator<const_pointer, __gnu_cxx::
- __versa_string<_CharT, _Traits, _Alloc,
- __rc_string_base> >
- __const_rc_iterator;
-
- // NB: When the allocator is empty, deriving from it saves space
- // (http://www.cantrip.org/emptyopt.html).
- template<typename _Alloc1>
- struct _Alloc_hider
- : public _Alloc1
- {
- _Alloc_hider(_CharT* __ptr)
- : _Alloc1(), _M_p(__ptr) { }
-
- _Alloc_hider(const _Alloc1& __a, _CharT* __ptr)
- : _Alloc1(__a), _M_p(__ptr) { }
-
- _CharT* _M_p; // The actual data.
- };
-
- // When __n = 1 way faster than the general multichar
- // traits_type::copy/move/assign.
- static void
- _S_copy(_CharT* __d, const _CharT* __s, size_type __n)
- {
- if (__n == 1)
- traits_type::assign(*__d, *__s);
- else
- traits_type::copy(__d, __s, __n);
- }
-
- static void
- _S_move(_CharT* __d, const _CharT* __s, size_type __n)
- {
- if (__n == 1)
- traits_type::assign(*__d, *__s);
- else
- traits_type::move(__d, __s, __n);
- }
-
- static void
- _S_assign(_CharT* __d, size_type __n, _CharT __c)
- {
- if (__n == 1)
- traits_type::assign(*__d, __c);
- else
- traits_type::assign(__d, __n, __c);
- }
-
- // _S_copy_chars is a separate template to permit specialization
- // to optimize for the common case of pointers as iterators.
- template<typename _Iterator>
- static void
- _S_copy_chars(_CharT* __p, _Iterator __k1, _Iterator __k2)
- {
- for (; __k1 != __k2; ++__k1, ++__p)
- traits_type::assign(*__p, *__k1); // These types are off.
- }
-
- static void
- _S_copy_chars(_CharT* __p, __sso_iterator __k1, __sso_iterator __k2)
- { _S_copy_chars(__p, __k1.base(), __k2.base()); }
-
- static void
- _S_copy_chars(_CharT* __p, __const_sso_iterator __k1,
- __const_sso_iterator __k2)
- { _S_copy_chars(__p, __k1.base(), __k2.base()); }
-
- static void
- _S_copy_chars(_CharT* __p, __rc_iterator __k1, __rc_iterator __k2)
- { _S_copy_chars(__p, __k1.base(), __k2.base()); }
-
- static void
- _S_copy_chars(_CharT* __p, __const_rc_iterator __k1,
- __const_rc_iterator __k2)
- { _S_copy_chars(__p, __k1.base(), __k2.base()); }
-
- static void
- _S_copy_chars(_CharT* __p, _CharT* __k1, _CharT* __k2)
- { _S_copy(__p, __k1, __k2 - __k1); }
-
- static void
- _S_copy_chars(_CharT* __p, const _CharT* __k1, const _CharT* __k2)
- { _S_copy(__p, __k1, __k2 - __k1); }
-
- static int
- _S_compare(size_type __n1, size_type __n2)
- {
- const difference_type __d = difference_type(__n1 - __n2);
-
- if (__d > __numeric_traits_integer<int>::__max)
- return __numeric_traits_integer<int>::__max;
- else if (__d < __numeric_traits_integer<int>::__min)
- return __numeric_traits_integer<int>::__min;
- else
- return int(__d);
- }
- };
-
-_GLIBCXX_END_NAMESPACE
-
-#endif /* _VSTRING_UTIL_H */