Commit fd1e1726 by Benjamin Kosnik Committed by Benjamin Kosnik

documentation.html: Add link for policy based associative containers docs.


2005-06-27  Benjamin Kosnik  <bkoz@redhat.com>
	    Ami Tavory  <pbassoc@gmail.com>

	* docs/html/documentation.html: Add link for policy based
	associative containers docs.
	* docs/html/ext/pb_assoc/Std_hash_set_impl.jpg: New.
	* docs/html/ext/pb_assoc/acks.html: New.
	* docs/html/ext/pb_assoc/balls_and_bins.jpg: New.
	* docs/html/ext/pb_assoc/basic_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/basic_assoc_cntnr_compound_data.html: New.
	* docs/html/ext/pb_assoc/basic_assoc_cntnr_no_data.html: New.
	* docs/html/ext/pb_assoc/basic_ds_tag.html: New.
	* docs/html/ext/pb_assoc/basic_hash_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/basic_hash_ds_tag.html: New.
	* docs/html/ext/pb_assoc/basic_invalidation_guarantee.html: New.
	* docs/html/ext/pb_assoc/basic_ms_tag.html: New.
	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/
	  basic_tree_assoc_cntnr_const_node_iterator.html: New.
	* docs/html/ext/pb_assoc/
	  basic_tree_assoc_cntnr_node_iterator.html: New.
	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev.html: New.
	* docs/html/ext/pb_assoc/basic_tree_assoc_cntnr_rev_it.html: New.
	* docs/html/ext/pb_assoc/basic_tree_ds_tag.html: New.
	* docs/html/ext/pb_assoc/cc_hash_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/cc_hash_ds_tag.html: New.
	* docs/html/ext/pb_assoc/
	  cc_hash_max_collision_check_resize_trigger.html: New.
	* docs/html/ext/pb_assoc/cc_hash_policy_cd.jpg: New.
	* docs/html/ext/pb_assoc/cd.jpg: New.
	* docs/html/ext/pb_assoc/component_requirements.html: New.
	* docs/html/ext/pb_assoc/compound_data_enabled_ms_tag.html: New.
	* docs/html/ext/pb_assoc/compound_data_type.html: New.
	* docs/html/ext/pb_assoc/compound_ds_tag.html: New.
	* docs/html/ext/pb_assoc/concepts.html: New.
	* docs/html/ext/pb_assoc/contact.html: New.
	* docs/html/ext/pb_assoc/counter_update_metadata.html: New.
	* docs/html/ext/pb_assoc/counter_update_policy.html: New.
	* docs/html/ext/pb_assoc/data_enabled_ms_tag.html: New.
	* docs/html/ext/pb_assoc/design.html: New.
	* docs/html/ext/pb_assoc/different_underlying_dss.jpg: New.
	* docs/html/ext/pb_assoc/direct_mask_range_hashing.html: New.
	* docs/html/ext/pb_assoc/direct_mod_range_hashing.html: New.
	* docs/html/ext/pb_assoc/disclaimer.html: New.
	* docs/html/ext/pb_assoc/ds_gen.html: New.
	* docs/html/ext/pb_assoc/ds_tag_cd.jpg: New.
	* docs/html/ext/pb_assoc/ds_traits.html: New.
	* docs/html/ext/pb_assoc/embedded_lists_1.jpg: New.
	* docs/html/ext/pb_assoc/embedded_lists_2.jpg: New.
	* docs/html/ext/pb_assoc/examples.html: New.
	* docs/html/ext/pb_assoc/exception_guarantees_specifics.html: New.
	* docs/html/ext/pb_assoc/find_invalidation_guarantee.html: New.
	* docs/html/ext/pb_assoc/find_iterators_cd.jpg: New.
	* docs/html/ext/pb_assoc/find_iterators_range_ops_1.jpg: New.
	* docs/html/ext/pb_assoc/find_iterators_range_ops_2.jpg: New.
	* docs/html/ext/pb_assoc/generics.html: New.
	* docs/html/ext/pb_assoc/gp_hash_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/gp_hash_ds_tag.html: New.
	* docs/html/ext/pb_assoc/gp_hash_policy_cd.jpg: New.
	* docs/html/ext/pb_assoc/hash_and_probe_general.html: New.
	* docs/html/ext/pb_assoc/hash_based_containers.html: New.
	* docs/html/ext/pb_assoc/hash_cd.jpg: New.
	* docs/html/ext/pb_assoc/hash_exponential_size_policy.html: New.
	* docs/html/ext/pb_assoc/hash_fn.html: New.
	* docs/html/ext/pb_assoc/hash_load_check_resize_trigger.html: New.
	* docs/html/ext/pb_assoc/hash_policies.html: New.
	* docs/html/ext/pb_assoc/hash_policy_cd.jpg: New.
	* docs/html/ext/pb_assoc/hash_prime_size_policy.html: New.
	* docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram.jpg: New.
	* docs/html/ext/pb_assoc/hash_range_hashing_seq_diagram2.jpg: New.
	* docs/html/ext/pb_assoc/hash_ranged_hash_range_hashing_fns.jpg: New.
	* docs/html/ext/pb_assoc/hash_standard_resize_policy.html: New.
	* docs/html/ext/pb_assoc/home.html: New.
	* docs/html/ext/pb_assoc/index.html: New.
	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram1.jpg: New.
	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram2.jpg: New.
	* docs/html/ext/pb_assoc/insert_resize_sequence_diagram3.jpg: New.
	* docs/html/ext/pb_assoc/insert_type_methods.html: New.
	* docs/html/ext/pb_assoc/interface.html: New.
	* docs/html/ext/pb_assoc/interval_node_invariants.jpg: New.
	* docs/html/ext/pb_assoc/introduction.html: New.
	* docs/html/ext/pb_assoc/invalidation_guarantee_cd.jpg: New.
	* docs/html/ext/pb_assoc/invalidation_guarantee_erase.jpg: New.
	* docs/html/ext/pb_assoc/lib_download.html: New.
	* docs/html/ext/pb_assoc/linear_probe_fn.html: New.
	* docs/html/ext/pb_assoc/list_updates.html: New.
	* docs/html/ext/pb_assoc/lu_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/lu_based_containers.html: New.
	* docs/html/ext/pb_assoc/lu_cd.jpg: New.
	* docs/html/ext/pb_assoc/lu_ds_tag.html: New.
	* docs/html/ext/pb_assoc/lu_ops.jpg: New.
	* docs/html/ext/pb_assoc/mmap_value_utils.html: New.
	* docs/html/ext/pb_assoc/motivation.html: New.
	* docs/html/ext/pb_assoc/move_to_front_update_metadata.html: New.
	* docs/html/ext/pb_assoc/move_to_front_update_policy.html: New.
	* docs/html/ext/pb_assoc/ms_cd.jpg: New.
	* docs/html/ext/pb_assoc/ms_gen.html: New.
	* docs/html/ext/pb_assoc/ms_tag_cd.jpg: New.
	* docs/html/ext/pb_assoc/ms_traits.html: New.
	* docs/html/ext/pb_assoc/node_invariant_invalidations.jpg: New.
	* docs/html/ext/pb_assoc/node_invariants.html: New.
	* docs/html/ext/pb_assoc/node_invariants.jpg: New.
	* docs/html/ext/pb_assoc/non_unique_mapping.html: New.
	* docs/html/ext/pb_assoc/non_unique_mapping_containers.jpg: New.
	* docs/html/ext/pb_assoc/null_data_type.html: New.
	* docs/html/ext/pb_assoc/null_hash_fn.html: New.
	* docs/html/ext/pb_assoc/null_probe_fn.html: New.
	* docs/html/ext/pb_assoc/order_by_key.html: New.
	* docs/html/ext/pb_assoc/order_statistics_key.html: New.
	* docs/html/ext/pb_assoc/order_statistics_key_cmp.html: New.
	* docs/html/ext/pb_assoc/order_statistics_node_updator.html: New.
	* docs/html/ext/pb_assoc/ov_tree_ds_tag.html: New.
	* docs/html/ext/pb_assoc/overview.html: New.
	* docs/html/ext/pb_assoc/pb_assoc_ex.html: New.
	* docs/html/ext/pb_assoc/portability.html: New.
	* docs/html/ext/pb_assoc/quadratic_probe_fn.html: New.
	* docs/html/ext/pb_assoc/range_invalidation_guarantee.html: New.
	* docs/html/ext/pb_assoc/rank_node_invariants.jpg: New.
	* docs/html/ext/pb_assoc/rationale_null_node_updator.jpg: New.
	* docs/html/ext/pb_assoc/rb_tree_ds_tag.html: New.
	* docs/html/ext/pb_assoc/reference_iterator.jpg: New.
	* docs/html/ext/pb_assoc/references.html: New.
	* docs/html/ext/pb_assoc/regression_tests.html: New.
	* docs/html/ext/pb_assoc/resize_general.html: New.
	* docs/html/ext/pb_assoc/resize_policies.html: New.
	* docs/html/ext/pb_assoc/resize_policy_cd.jpg: New.
	* docs/html/ext/pb_assoc/restoring_node_invariants.jpg: New.
	* docs/html/ext/pb_assoc/sample_node_updator.hpp: New.
	* docs/html/ext/pb_assoc/sample_probe_fn.hpp: New.
	* docs/html/ext/pb_assoc/sample_probe_fn.html: New.
	* docs/html/ext/pb_assoc/sample_range_hashing.hpp: New.
	* docs/html/ext/pb_assoc/sample_range_hashing.html: New.
	* docs/html/ext/pb_assoc/sample_ranged_hash_fn.hpp: New.
	* docs/html/ext/pb_assoc/sample_ranged_hash_fn.html: New.
	* docs/html/ext/pb_assoc/sample_ranged_probe_fn.hpp: New.
	* docs/html/ext/pb_assoc/sample_ranged_probe_fn.html: New.
	* docs/html/ext/pb_assoc/sample_resize_policy.hpp: New.
	* docs/html/ext/pb_assoc/sample_resize_policy.html: New.
	* docs/html/ext/pb_assoc/sample_resize_trigger.hpp: New.
	* docs/html/ext/pb_assoc/sample_size_policy.hpp: New.
	* docs/html/ext/pb_assoc/sample_update_policy.hpp: New.
	* docs/html/ext/pb_assoc/size_policies_general.html: New.
	* docs/html/ext/pb_assoc/splay_tree_ds_tag.html: New.
	* docs/html/ext/pb_assoc/timing_tests.html: New.
	* docs/html/ext/pb_assoc/toc.html: New.
	* docs/html/ext/pb_assoc/tree_assoc_cntnr.html: New.
	* docs/html/ext/pb_assoc/
	  tree_assoc_cntnr_const_node_iterator.html: New.
	* docs/html/ext/pb_assoc/tree_assoc_cntnr_node_iterator.html: New.
	* docs/html/ext/pb_assoc/tree_based_containers.html: New.
	* docs/html/ext/pb_assoc/tree_cd.jpg: New.
	* docs/html/ext/pb_assoc/trigger_policies_general.html: New.
	* docs/html/ext/pb_assoc/tutorial.html: New.
	* docs/html/ext/pb_assoc/update_seq_diagram.jpg: New.
	* include/Makefile.am: Add assoc_srcdir, assoc_builddir, assoc_subdir,
	assoc_headers.
	* include/Makefile.in: Regenerate.
	* include/ext/typelist.h: New.
	* include/ext/pb_assoc/assoc_cntnr.hpp: New.
	* include/ext/pb_assoc/data_type.hpp: New.
	* include/ext/pb_assoc/ds_trait.hpp: New.
	* include/ext/pb_assoc/exception.hpp: New.
	* include/ext/pb_assoc/hash_policy.hpp: New.
	* include/ext/pb_assoc/lu_policy.hpp: New.
	* include/ext/pb_assoc/ms_trait.hpp: New.
	* include/ext/pb_assoc/tree_policy.hpp: New.
	* include/ext/pb_assoc/trivial_iterator_def.hpp: New.
	* include/ext/pb_assoc/detail/assoc_cntnr_base.hpp: New.
	* include/ext/pb_assoc/detail/cond_dealtor.hpp: New.
	* include/ext/pb_assoc/detail/constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ds_trait_imp.hpp: New.
	* include/ext/pb_assoc/detail/hash_types_traits.hpp: New.
	* include/ext/pb_assoc/detail/map_debug_base.hpp: New.
	* include/ext/pb_assoc/detail/mapping_level_imp.hpp: New.
	* include/ext/pb_assoc/detail/ms_category_imp.hpp: New.
	* include/ext/pb_assoc/detail/ms_trait_imp.hpp: New.
	* include/ext/pb_assoc/detail/order_statistics_imp.hpp: New.
	* include/ext/pb_assoc/detail/standard_policies.hpp: New.
	* include/ext/pb_assoc/detail/standard_sizes.hpp: New.
	* include/ext/pb_assoc/detail/type_utils.hpp: New.
	* include/ext/pb_assoc/detail/typelist.hpp: New.
	* include/ext/pb_assoc/detail/types_traits.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
     	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/d_extract_key.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
	  d_find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
	  d_insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/extract_key.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
	  insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_assoc_cntnr/
	  iterators_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_hash_assoc_cntnr/
	  resize_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  node_iteration_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  policy_access_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  r_erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  r_range_iteration_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  range_iteration_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/basic_tree_assoc_cntnr/
	  split_join_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  bin_search_tree_.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  cond_dtor_entry_dealtor.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  cond_key_dtor_entry_dealtor.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/find_iterators.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  iterators_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/node_iterators.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  r_erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/rotate_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/bin_search_tree_/
	  split_join_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_hash_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/cc_ht_map_.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/cmp_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  cond_key_dtor_entry_dealtor.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  constructor_destructor_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  constructor_destructor_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  debug_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  debug_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/entry_list_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  erase_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  erase_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  find_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  find_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  insert_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  insert_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/iterators_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  policy_access_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/resize_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  resize_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/
	  resize_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/size_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/cc_ht_map_/standard_policies.hpp: New.
	* include/ext/pb_assoc/detail/eq_fn/eq_by_less.hpp: New.
	* include/ext/pb_assoc/detail/eq_fn/hash_eq_fn.hpp: New.
	* include/ext/pb_assoc/detail/gp_hash_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  constructor_destructor_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  constructor_destructor_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  debug_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  debug_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  erase_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  erase_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  find_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  find_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/gp_ht_map_.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
  	  insert_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  insert_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/iterator_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  policy_access_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/resize_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  resize_no_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/gp_ht_map_/
	  resize_store_hash_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/
	  direct_mask_range_hashing_imp.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/
	  direct_mod_range_hashing_imp.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/linear_probe_fn_imp.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/
	  mask_based_range_hashing.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/mod_based_range_hashing.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/probe_fn_base.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/quadratic_probe_fn_imp.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/ranged_hash_fn.hpp: New.
	* include/ext/pb_assoc/detail/hash_fn/ranged_probe_fn.hpp: New.
	* include/ext/pb_assoc/detail/lu_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_assoc_cntnr/
	  policy_access_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/iterators_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/lu_map_.hpp: New.
	* include/ext/pb_assoc/detail/lu_map_/policy_access_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/lu_policy/
  	  counter_lu_metadata_imp.hpp: New.
	* include/ext/pb_assoc/detail/lu_policy/counter_lu_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/lu_policy/mtf_lu_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/cond_dtor.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/iterators_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/node_iterators.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/ov_tree_map_.hpp: New.
	* include/ext/pb_assoc/detail/ov_tree_map_/split_join_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/node.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/rb_tree_.hpp: New.
	* include/ext/pb_assoc/detail/rb_tree_map_/split_join_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  cc_hash_max_collision_resize_trigger_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  hash_exponential_size_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  hash_load_check_resize_trigger_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  hash_prime_size_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  hash_standard_resize_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/
	  ht_prime_size_policy_imp.hpp: New.
	* include/ext/pb_assoc/detail/resize_policy/size_base.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/
	  constructors_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/debug_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/node.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/splay_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/splay_tree_.hpp: New.
	* include/ext/pb_assoc/detail/splay_tree_/split_join_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/tree_assoc_cntnr/
	  constructor_destructor_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/tree_policy/
	  null_node_updator_imp.hpp: New.
	* include/ext/pb_assoc/detail/tree_policy/
	  order_statistics_imp.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_append.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_apply.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_at_index.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_contains.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_filter.hpp: New.
	* include/ext/pb_assoc/detail/typelist/typelist_transform.hpp: New.
	* include/ext/pb_assoc/detail/typelist/
	  typelist_typelist_append.hpp: New.
	* include/ext/pb_assoc/detail/unordered_iterator/
	  const_find_iterator.hpp: New.
	* include/ext/pb_assoc/detail/unordered_iterator/
	  const_iterator.hpp: New.
	* include/ext/pb_assoc/detail/unordered_iterator/
	  find_iterator.hpp: New.
	* include/ext/pb_assoc/detail/unordered_iterator/iterator.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	  constructor_destructor_and_related.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	  erase_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	  erase_if_pred.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/find_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/info_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	insert_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	invalidation_guarantee_selector.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	it_value_type_traits.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/iterator.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	iterator_fn_imps.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/ref_pair.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	value_type_adapter.hpp: New.
	* include/ext/pb_assoc/detail/value_type_adapter/
	value_type_traits.hpp: New.
	* testsuite/Makefile.am (CLEANFILES): Add .o, .dat, .cc.
	* testsuite/Makefile.in: Regenerate.
	* testsuite/testsuite_common_types.h: New.
	* testsuite/testsuite_visualization.h: New.
	* testsuite/ext/pb_assoc/example/basic_map.cc: New.
	* testsuite/ext/pb_assoc/example/basic_multimap.cc: New.
	* testsuite/ext/pb_assoc/example/basic_set.cc: New.
	* testsuite/ext/pb_assoc/example/ds_traits.cc: New.
	* testsuite/ext/pb_assoc/example/erase_if.cc: New.
	* testsuite/ext/pb_assoc/example/extract_key.cc: New.
	* testsuite/ext/pb_assoc/example/hash_find_neg.cc: New.
	* testsuite/ext/pb_assoc/example/hash_illegal_resize.cc: New.
	* testsuite/ext/pb_assoc/example/hash_initial_size.cc: New.
	* testsuite/ext/pb_assoc/example/hash_load_set_change.cc: New.
	* testsuite/ext/pb_assoc/example/hash_mod.cc: New.
	* testsuite/ext/pb_assoc/example/hash_resize.cc: New.
	* testsuite/ext/pb_assoc/example/hash_resize_neg.cc: New.
	* testsuite/ext/pb_assoc/example/hash_shift_mask.cc: New.
	* testsuite/ext/pb_assoc/example/mapping_level.cc: New.
	* testsuite/ext/pb_assoc/example/mapping_level_neg.cc: New.
	* testsuite/ext/pb_assoc/example/ms_traits.cc: New.
	* testsuite/ext/pb_assoc/example/ranged_hash.cc: New.
	* testsuite/ext/pb_assoc/example/store_hash.cc: New.
	* testsuite/ext/pb_assoc/example/tree_intervals.cc: New.
	* testsuite/ext/pb_assoc/example/tree_join.cc: New.
	* testsuite/ext/pb_assoc/example/tree_order_statistics.cc: New.
	* testsuite/ext/pb_assoc/example/tree_order_statistics_join.cc: New.
	* testsuite/ext/pb_assoc/example/tree_split.cc: New.
	* testsuite/performance/20_util/allocator/(insert.cc,
	  insert_insert.cc, list_sort_search.cc, map_mt_find.cc, map_thread.cc,
	  producer_consumer.cc): Recast to use typelists and move to...
	* testsuite/performance/23_containers/find/map.cc: New.
	* testsuite/performance/23_containers/index/map.cc: New.
	* testsuite/performance/23_containers/insert/associative.cc: New.
	* testsuite/performance/23_containers/insert/sequence.cc: New.
	* testsuite/performance/23_containers/insert_erase/associative.cc: New.
	* testsuite/performance/23_containers/producer_consumer/
	(associative.cc, sequence.cc): New.
	* testsuite/performance/23_containers/sort_search/list.cc: New.
	* testsuite/performance/23_containers/container_benchmark.cc: Remove.
	* testsuite/performance/23_containers/map_create_fill.cc: Move...
	* testsuite/performance/23_containers/create/map.cc: ...here.
	* testsuite/performance/23_containers/set_create_from_sorted.cc: Move.
	* testsuite/performance/23_containers/create_from_sorted/set.cc: here.
	* testsuite/performance/23_containers/list_create_fill_sort.cc: Move...
	* testsuite/performance/23_containers/create_sort/list.cc: ...here.
	* testsuite/performance/23_containers/set_insert_from_sorted.cc: Move.
	* testsuite/performance/23_containers/insert_from_sorted/set.cc: here.

Co-Authored-By: Ami Tavory <pbassoc@gmail.com>

From-SVN: r101354
parent d4d3b0ff
......@@ -224,6 +224,7 @@
<li>Extensions to the Standard Library
<ul>
<li><a href="ext/pb_assoc/index.html">Policy Based Associative Containers</a></li>
<li><a href="ext/howto.html#1">Ropes and trees and hashes, oh my!</a></li>
<li><a href="ext/howto.html#2">Added members and types</a></li>
<li><a href="ext/mt_allocator.html"><code>__mt_alloc</code> </a></li>
......
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Acknowledgements</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body>
<h1>Acknowledgements</h1>
<ol>
<li>This library was written at the <a href = "http://www.haifa.il.ibm.com/dept/storage/network.html">Network Storage Technologies</a> Group of
<a href = "http://www.haifa.il.ibm.com/">IBM's Haifa Research Labs</a>.</li>
<li>The library is based heavily on policy-based design and uses many useful
techniques from [<a href="references.html#knuth98sorting">alexandrescu01modern</a>].
</li>
<li> Two ideas are borrowed from the SGI-STL implementation [<a href = "references.html#sgi_stl">sgi_stl</a>]:
<ol>
<li>
The prime-based resize policies use a list of primes taken from the SGI-STL implementation.
</li>
<li> The red-black trees contain both a root node and a header
node (containing metadata), connected in a way
that forward and reverse iteration can be performed efficiently.
</li>
</ol>
</li>
<li> Some test utilities borrow ideas from [<a href = "references.html#boost_timer">boost_timer</a>].
</li>
<li> We would like to thank Scott Meyers for useful comments (without attributing to him
any flaws in the design or implementation of the library).
</li>
<li> Much of the documentation is
<a href = "http://www.python.org/">
<img src="PythonPoweredSmall.gif" align=top width=55
height=22 alt="[Python Powered]" border=0>
</a>.
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>basic_ds_tag
</tt>
Interface
</h1>
<p>Basic data-structure tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_hash_assoc_cntnr Interface
</title>
</head>
<body>
<h1>
<tt>basic_hash_assoc_cntnr
</tt>
Interface
</h1>
<p>A basic hash-based associative container.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/assoc_cntnr.hpp"><tt>assoc_cntnr.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
<a href = "#link2">Base classes.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link3">Policy definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link4">Constructors, destructor, and related.
</a>
</li>
<li>
<a href = "#link5">Policy access methods.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link6">Resize methods.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Key3735928856">Key</a></pre>
</td>
<td>
<p>Key type.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Data3735928937">Data</a></pre>
</td>
<td>
<p>Data type.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Hash_Fn3735929222">Hash_Fn</a></pre>
</td>
<td>
<p>Hash functor.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Eq_Fn3735929016">Eq_Fn</a></pre>
</td>
<td>
<p>Equivalence functor.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Resize_Policy3735929904">Resize_Policy</a></pre>
</td>
<td>
<p>Resize policy.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Store_Hash3735929567">Store_Hash</a></pre>
</td>
<td>
<p>Indicates whether the hash value will be stored along with each key.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "DS_Tag,3735929133">DS_Tag,</a></pre>
</td>
<td>
<p>Data-structure tag.</p>
</td>
<td>
-
</td>
</tr>
<tr>
<td>
<pre><a name = "Allocator3735929488">Allocator</a></pre>
</td>
<td>
<p>Allocator type.</p>
</td>
<td>
-
</td>
</tr>
</table>
<h2>
<a name = "link2">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "#Resize_Policy3735929904">Resize_Policy</a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
<tr>
<td>
<pre><a href = "#Hash_Fn3735929222">Hash_Fn</a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
<tr>
<td>
<pre>Depending on <a href = "#Data3735928937">Data</a>:<ol> <li> <a href = "null_data_type.html"><tt>null_data_type</tt></a> - <a href = "basic_assoc_cntnr_no_data.html"><tt>basic_assoc_cntnr</tt></a> &quot;set&quot; specialization </li> <li> <a href = "compound_data_type.html"><tt>compound_data_type</tt></a><tt>&lt;Container&gt;</tt> - <a href = "basic_assoc_cntnr_compound_data.html"><tt>basic_assoc_cntnr</tt></a> &quot;multimap&quot; specialization </li> <li> Other - <a href = "basic_assoc_cntnr.html"><tt>basic_assoc_cntnr</tt></a> &quot;map&quot; specialization </li></ol></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Policy definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "hash_fn3735929286">hash_fn</a></pre>
</td>
<td>
<pre><a href = "#Hash_Fn3735929222">Hash_Fn</a></pre>
</td>
<td>
<p>Hash functor type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "eq_fn3735929080">eq_fn</a></pre>
</td>
<td>
<pre><a href = "#Eq_Fn3735929016">Eq_Fn</a></pre>
</td>
<td>
<p>Equivalence functor type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "resize_policy3735929968">resize_policy</a></pre>
</td>
<td>
<pre><a href = "#Resize_Policy3735929904">Resize_Policy</a></pre>
</td>
<td>
<p>Resize policy type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "store_hash3735929631">store_hash</a></pre>
</td>
<td>
<pre><a href = "#Store_Hash3735929567">Store_Hash</a></pre>
</td>
<td>
<p>Indicates whether a hash value is stored with each entry.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>virtual</b>
~basic_hash_assoc_cntnr
()</pre>
</td>
<td>
<p>Destructor.</p>
</td>
</tr>
</table>
<h2>
<a name = "link5">Policy access methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a href = "#hash_fn3735929286">hash_fn</a> &amp;
get_hash_fn
()</pre>
</td>
<td>
<p>Access to the <a href = "#hash_fn3735929286"><tt>hash_fn</tt></a> object.</p>
</td>
</tr>
<tr>
<td>
<pre><b>const</b> <a href = "#hash_fn3735929286">hash_fn</a> &amp;
get_hash_fn
() <b>const</b></pre>
</td>
<td>
<p>Const access to the <a href = "#hash_fn3735929286"><tt>hash_fn</tt></a> object.</p>
</td>
</tr>
<tr>
<td>
<pre><a href = "#eq_fn3735929080">eq_fn</a> &amp;
get_eq_fn
()</pre>
</td>
<td>
<p>Access to the <a href = "#eq_fn3735929080"><tt>eq_fn</tt></a> object.</p>
</td>
</tr>
<tr>
<td>
<pre><b>const</b> <a href = "#eq_fn3735929080">eq_fn</a> &amp;
get_eq_fn
() <b>const</b></pre>
</td>
<td>
<p>Const access to the <a href = "#eq_fn3735929080"><tt>eq_fn</tt></a> object.</p>
</td>
</tr>
<tr>
<td>
<pre><a href = "#Resize_Policy3735929904">Resize_Policy</a> &amp;
get_resize_policy
()</pre>
</td>
<td>
<p>Access to the <a href = "#resize_policy3735929968"><tt>resize_policy</tt></a> object.</p>
</td>
</tr>
<tr>
<td>
<pre><b>const</b> <a href = "#resize_policy3735929968">resize_policy</a> &amp;
get_resize_policy
() <b>const</b></pre>
</td>
<td>
<p>Const access to the <a href = "#resize_policy3735929968"><tt>resize_policy</tt></a> object.</p>
</td>
</tr>
</table>
<h2>
<a name = "link6">Resize methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>virtual</b> <b>void</b>
do_resize
(size_type new_size)</pre>
</td>
<td>
<p>Resizes the container object to <font color = "#666666"><tt>new_size</tt></font>.</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_hash_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>basic_hash_ds_tag
</tt>
Interface
</h1>
<p>Basic hash data-structure tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_ds_tag.html"><tt>basic_ds_tag</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_invalidation_guarantee Interface
</title>
</head>
<body>
<h1>
<tt>basic_invalidation_guarantee
</tt>
Interface
</h1>
<p>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.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_ms_tag Interface
</title>
</head>
<body>
<h1>
<tt>basic_ms_tag
</tt>
Interface
</h1>
<p>Basic mapping-semantics tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ms_trait.hpp"><tt>ms_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_tree_assoc_cntnr::const_node_iterator Interface
</title>
</head>
<body>
<h1>
<tt><font color = "olive">basic_tree_assoc_cntnr</font>::const_node_iterator
</tt>
Interface
</h1>
<p>Const node iterator.
</p>
<p>This is an
</p>
<ol>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link1">Iterator definitions.
</a>
</li>
<li>
<a href = "#link2">Value-type definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructor, and related.
</a>
</li>
<li>
<a href = "#link4">Access methods.
</a>
</li>
<li>
<a href = "#link5">Movement methods.
</a>
</li>
<li>
<a href = "#link6">Comparison methods.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Iterator definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "iterator_category3735929377">iterator_category</a></pre>
</td>
<td>
<pre>trivial_iterator_tag</pre>
</td>
<td>
<p>Category. comment = </p>
</td>
</tr>
<tr>
<td>
<pre><a name = "difference_type3735930139">difference_type</a></pre>
</td>
<td>
<pre><b>void</b></pre>
</td>
<td>
<p>Difference type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link2">Value-type definitions.
</a>
</h2>
<p>Note that a node iterator's value type is actually a tree iterator.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "value_type3735929645">value_type</a></pre>
</td>
<td>
<pre><a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_iterator3735930079">const_iterator</a></pre>
</td>
<td>
<p>Iterator's value type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "pointer3735929328">pointer</a></pre>
</td>
<td>
<pre><a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_iterator3735930079">const_iterator</a> *</pre>
</td>
<td>
<p>Iterator's pointer type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "const_pointer3735929974">const_pointer</a></pre>
</td>
<td>
<pre><a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_iterator3735930079">const_iterator</a> *</pre>
</td>
<td>
<p>Iterator's const pointer type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "reference3735929502">reference</a></pre>
</td>
<td>
<pre><a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_iterator3735930079">const_iterator</a> &amp;</pre>
</td>
<td>
<p>Iterator's reference type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "const_reference3735930148">const_reference</a></pre>
</td>
<td>
<pre><b>const</b> <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> &amp;</pre>
</td>
<td>
<p>Iterator's const reference type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b>
const_node_iterator
(<b>const</b> node_pointer p_nd = NULL)</pre>
</td>
<td>
<p>Default constructor.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
<h2>
<a name = "link4">Access methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_iterator3735930079">const_iterator</a>
<b>operator</b>*
() <b>const</b></pre>
</td>
<td>
<p>Access.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
<h2>
<a name = "link5">Movement methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> const_node_iterator
l_child
() <b>const</b></pre>
</td>
<td>
<p>Returns the <tt><b>const</b></tt> node <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> associated with the left node.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> const_node_iterator
r_child
() <b>const</b></pre>
</td>
<td>
<p>Returns the <tt><b>const</b></tt> node <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> associated with the right node.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
<h2>
<a name = "link6">Comparison methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>bool</b>
<b>operator</b>==
(<b>const</b> const_node_iterator &amp;r_other) <b>const</b></pre>
</td>
<td>
<p>Compares content to a different <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> object.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>bool</b>
<b>operator</b>!=
(<b>const</b> const_node_iterator &amp;r_other) <b>const</b></pre>
</td>
<td>
<p>Compares content (negatively) to a different <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> object.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_tree_assoc_cntnr::node_iterator Interface
</title>
</head>
<body>
<h1>
<tt><font color = "olive">basic_tree_assoc_cntnr</font>::node_iterator
</tt>
Interface
</h1>
<p>Node iterator.
</p>
<p>This is an
</p>
<ol>
<li>
<a href = "#link1">Base classes.
</a>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link2">Constructors, destructor, and related.
</a>
</li>
<li>
<a href = "#link3">Access methods.
</a>
</li>
<li>
<a href = "#link4">Movement methods.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#const_node_iterator3735929535">const_node_iterator</a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
<h2>
<a name = "link2">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b>
node_iterator
(<b>const</b> node_pointer p_nd = NULL)</pre>
</td>
<td>
<p>Default constructor.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
<h2>
<a name = "link3">Access methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a>
<b>operator</b>*
() <b>const</b></pre>
</td>
<td>
<p>Access.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
<h2>
<a name = "link4">Movement methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "40%" ALIGN = "left"><b>Description</b></TD><TD Width = "10%" ALIGN = "left"><b>Complexity Guarantee</b></TD><TD Width = "5%" ALIGN = "left"><b>Exception Guarantee</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> node_iterator
l_child
()</pre>
</td>
<td>
<p>Returns the node <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> associated with the left node.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> node_iterator
r_child
()</pre>
</td>
<td>
<p>Returns the node <a href = "../../pb_assoc/doc/basic_tree_assoc_cntnr.html#iterator3735929433">iterator</a> associated with the right node.</p>
</td>
<td>
<p> <i>O(1)</i> worst.</p>
</td>
<td>
<a href = "exception_guarantees_specifics.html#cannot_throw_guarantee">3</a>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>basic_tree_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>basic_tree_ds_tag
</tt>
Interface
</h1>
<p>Basic tree data-structure tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_ds_tag.html"><tt>basic_ds_tag</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>cc_hash_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>cc_hash_ds_tag
</tt>
Interface
</h1>
<p>Collision-chaining hash data-structure tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_hash_ds_tag.html"><tt>basic_hash_ds_tag</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>cc_hash_max_collision_check_resize_trigger Interface
</title>
</head>
<body>
<h1>
<tt>cc_hash_max_collision_check_resize_trigger
</tt>
Interface
</h1>
<p>A resize trigger policy based on collision checks. It keeps the simulated load factor lower than some given load factor.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/hash_policy.hpp"><tt>hash_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructor, and related.
</a>
</li>
<li>
<a href = "#link4">Load access methods.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link5">Insert search notifications.
</a>
</li>
<li>
<a href = "#link6">Find search notifications.
</a>
</li>
<li>
<a href = "#link7">Erase search notifications.
</a>
</li>
<li>
<a href = "#link8">Content change notifications.
</a>
</li>
<li>
<a href = "#link9">Size change notifications.
</a>
</li>
<li>
<a href = "#link10">Queries.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "External_Load_Access3735929540">External_Load_Access</a></pre>
</td>
<td>
<p>Specifies whether the load factor can be accessed externally. The two options have different tradeoffs in terms of flexibility, genericity, and encapsulation.</p>
</td>
<td>
<tt><b>false</b></tt>
</td>
</tr>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>
size_t
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre><a href = "#Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "external_load_access3735929604">external_load_access</a></pre>
</td>
<td>
<pre><a href = "#External_Load_Access3735929540">External_Load_Access</a></pre>
</td>
<td>
<p>Indicates whether loads can be accessed externally</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre> cc_hash_max_collision_check_resize_trigger
(float load = 0.5)</pre>
</td>
<td>
<p>Default constructor, or constructor taking <font color = "#666666"><tt>load</tt></font>, a load factor which it will attempt to maintain.</p>
</td>
</tr>
<tr>
<td>
<pre><b>void</b>
swap
(<font color = "olive">cc_hash_max_collision_check_resize_trigger</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Load access methods.
</a>
</h2>
<p> These methods are only available if the external access parameter is set.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> float
get_load
() <b>const</b></pre>
</td>
<td>
<p>Returns a pair of the minimal and maximal loads, respectively.</p>
<p>Calling this method will not compile when <a href = "#External_Load_Access3735929540"><tt>External_Load_Access</tt></a> == <tt><b>false</b></tt>.</p>
</td>
</tr>
</table>
<h2>
<a name = "link5">Insert search notifications.
</a>
</h2>
<p>Notifications called during an insert operation.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_insert_search_start
()</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_insert_search_collision
()</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_insert_search_end
()</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h2>
<a name = "link6">Find search notifications.
</a>
</h2>
<p>Notifications called during a find operation.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_find_search_start
()</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_find_search_collision
()</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_find_search_end
()</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h2>
<a name = "link7">Erase search notifications.
</a>
</h2>
<p>Notifications called during an insert operation.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_erase_search_start
()</pre>
</td>
<td>
<p>Notifies a search started.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_erase_search_collision
()</pre>
</td>
<td>
<p>Notifies a search encountered a collision.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_erase_search_end
()</pre>
</td>
<td>
<p>Notifies a search ended.</p>
</td>
</tr>
</table>
<h2>
<a name = "link8">Content change notifications.
</a>
</h2>
<p>Notifications called when the content of the table changes in a way that can affect the resize policy.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_inserted
(<a href = "#size_type3735929547">size_type</a> num_entries)</pre>
</td>
<td>
<p>Notifies an element was inserted.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
notify_erased
(<a href = "#size_type3735929547">size_type</a> num_entries)</pre>
</td>
<td>
<p>Notifies an element was erased.</p>
</td>
</tr>
<tr>
<td>
<pre><b>void</b>
notify_cleared
()</pre>
</td>
<td>
<p>Notifies the table was cleared.</p>
</td>
</tr>
</table>
<h2>
<a name = "link9">Size change notifications.
</a>
</h2>
<p>Notifications called when the table changes size.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>void</b>
notify_resized
(<a href = "#size_type3735929547">size_type</a> new_size)</pre>
</td>
<td>
<p>Notifies the table was resized as a result of this object's signifying that a resize is needed.</p>
</td>
</tr>
<tr>
<td>
<pre><b>void</b>
notify_externally_resized
(<a href = "#size_type3735929547">size_type</a> new_size)</pre>
</td>
<td>
<p>Notifies the table was resized externally.</p>
</td>
</tr>
</table>
<h2>
<a name = "link10">Queries.
</a>
</h2>
<p>Called to query whether/how to resize.</p>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>bool</b>
is_resize_needed
() <b>const</b></pre>
</td>
<td>
<p>Queries whether a resize is needed.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>bool</b>
is_grow_needed
(<a href = "#size_type3735929547">size_type</a> size, <a href = "#size_type3735929547">size_type</a> num_entries) <b>const</b></pre>
</td>
<td>
<p>Queries whether a grow is needed.</p>
<p>This method is called only if this object indicated is needed.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <b>bool</b>
is_shrink_needed
(<a href = "#size_type3735929547">size_type</a> size, <a href = "#size_type3735929547">size_type</a> num_entries) <b>const</b></pre>
</td>
<td>
<p>Queries whether a shrink is needed.</p>
<p>This method is called only if this object indicated is needed.</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Component Requirements</title>
</head>
<body bgcolor = "white">
<h1>Component Requirements</h1>
<h2>Functional Requirements</h2>
<ol>
<li>
Keys:
<ol>
<li>
Key objects must be copy-constructible (they need not support assignment).
<li>
Key objects must be destructible.</li>
</ol>
<li>
Data:
<ol>
<li>
Data objects must be copy-constructible (they need not support assignment).
<LI>
Data objects must be default constructible.
<li>
Data objects must be destructible.</li>
</ol></li> </ol> <a name="exception_requirements">
<h2>Exception Requirements</h2>
</a>
<ol>
<li>
Keys:
<ol>
<li>
Key objects must not throw exceptions when destructed.
<li>
Key objects may throw exceptions when copy constructed.</li>
</ol>
<li>
Data:
<ol>
<li>
Data objects must must not throw exceptions when destructed.
<li>
Data objects may throw exceptions when copy constructed.</li>
</ol></li> </ol>
<HR>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>compound_data_enabled_ms_tag Interface
</title>
</head>
<body>
<h1>
<tt>compound_data_enabled_ms_tag
</tt>
Interface
</h1>
<p>Mapping-semantics tag indicating that the container objects maps each key to some compound datum.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ms_trait.hpp"><tt>ms_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>compound_data_type Interface
</title>
</head>
<body>
<h1>
<tt>compound_data_type
</tt>
Interface
</h1>
<p>A data-policy indicating that an associative container has multiple mapping levels.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/data_type.hpp"><tt>data_type.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Cntnr3735929076">Cntnr</a></pre>
</td>
<td>
<p>(Associative) container type to which every key in the container maps.</p>
</td>
<td>
-
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "cntnr3735929108">cntnr</a></pre>
</td>
<td>
<pre><a href = "#Cntnr3735929076">Cntnr</a></pre>
</td>
<td>
<p>The type of container which is the actual data type.</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>compound_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>compound_ds_tag
</tt>
Interface
</h1>
<p>Compound data-structure tag.
</p>
<p>Indicates that the underlying data-structure is a composition of other data structures.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_ds_tag.html"><tt>basic_ds_tag</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Concepts</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Concepts</h1>
<p>
Following are some concepts used throughout the documentation.
</p>
<ol>
<li><a href = "#concepts_null_policies">Null Policy Classes</a></li>
<li><a href = "#concepts_find_and_range_iterators">Find and Range Iterators</a></li>
<li><a href = "#concepts_mapping_levels">Mapping Levels</a></li>
</ol>
<h2><a name = "concepts_null_policies">Null Policy Classes</a></h2>
<p>
Associative containers are typically parameterized by various policies.
For example, a hash-based associative
container is parameterized by a hash-functor, transforming each key into an non-negative numerical type. Each such value is then further mapped into a position within the table.
The mapping of a key into a position within the table is therefore a two-step process.
</p>
<p>
In some
cases, instantiations are <i>redundant</i>. For example, when the keys are integers, it is possible to use a <i>redundant</i>
hash policy, which transforms each key into its value.
</p>
<p>
In some other cases, these policies are <i>irrelevent</i>. For example,
a hash-based associative container might transform keys into positions within
a table by a different method than the two-step method described above. In such a case, the hash functor is simply irrelevent.
</p>
<p>
<tt>pb_assoc</tt> uses special pre-defined &quot;null policies&quot; classes
for these cases. Some null policies in <tt>pb_assoc</tt>
are:
</p>
<ol>
<li <a href = "null_data_type.html"><tt>null_data_type</tt></a></li>
<li><a href = "null_node_updator.html"><tt>null_node_updator</tt></a></li>
<li><a href = "null_hash_fn.html"><tt>null_hash_fn</tt></a></li>
<li><a href = "null_probe_fn.html"><tt>null_probe_fn</tt></a></li>
</ol>
<p>
A &quot;set&quot; in <tt>pb_assoc</tt> is an associative container with its <tt>Data_Parameter</tt> instantiated by
<a href = "null_data_type.html"><tt>null_data_type</tt></a>.
<a href = "tree_based_containers.html#node_invariants.html">Tree-Based Containers::Node Invariants</a>
explains another case where a null policy is needed.
</p>
<h2><a name = "concepts_find_and_range_iterators">Find and Range Methods and Iterators</a></h2>
<p>
Associative containers allow access to their elements via iterators. <i>E.g.</i>,
<tt>find</tt> returns an iterator to an element with a given key and
<tt>begin</tt> returns an iterator to the first element in the container.
</p>
<p>
In general, there are two types of methods: <i>find types</i>, and <i>range types</i>.
Find-type
methods return iterators corresponding to elements which have been found in some sense, as
the container searched for them in order to access them (<i>i.e.</i>, via the
<tt>find</tt> method) or searched for their location in order to insert them
(<i>i.e.</i>, via the <tt>insert</tt> method). Range-type methods return iterators
which can be used to traverse the range of all stored elements, (<i>i.e.</i>, via the
<tt>begin</tt> and <tt>end</tt> methods).
</p>
<p>Correspondingly, in <tt>pb_assoc</tt> there are two types of iterators: <i>find type</i>
iterators are returned by find methods, and range iterators are returned by range methods. For example,
if <tt>T</tt> is any associative container with integer keys, and <tt>t</tt>
is a container of type <tt>T</tt>,
then the following snippet is valid:
</p>
<pre>
<b>typename</b> T::find_iterator it0 = t.find(3);
<b>typename</b> T::const_find_iterator it0 = t.find(3);
<b>typename</b> T::iterator it0 = t.begin();
<b>typename</b> T::const_iterator it0 = t.begin();
</pre>
<p>
This is motivated and explained further in
<a href = "ds_gen.html#find_range">Data-Structure Genericity::Find-Type and Range-Type Methods and Iterators</a>, which also explains the relationship between find-type and range-type iterators.
</p>
<h2><a href = "#concepts_mapping_levels">Mapping Levels</a></h2>
<p>
In <tt>pb_assoc</tt> &quot;multimaps&quot; are
&quot;maps&quot; of &quot;sets&quot;. While this design allows efficient
operations, it makes for cumbersome use at points. For example a
&quot;multimap&quot; of integers to characters does not
directly support <tt>inser(std::make_pair(2, 'b')</tt>, since 2 is mapped
to a &quot;set&quot; of characters, and not to a character.
</p>
<p>
Consequently, <tt>pb_assoc</tt> contains a rebind-like mechanism so that
containers can support such operations. To dispel ambiguity, container types are
assigned mapping levels. &quot;Maps&quot; and &quot;sets&quot; have
a mapping level 1, since they use a single association level. The &quot;multimap&quot;
above has a mapping level 2, since it uses two association levels: one for integers, and one for characters. The rebind mechanism can be used to alter the association level. This is described in
<a href = "ms_gen.html">Mapping Semantics</a>.
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Contact</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Contact</h1>
<p>
For anything relevant, please write to
<a href = "mailto:pbassoc@gmail.com">pbassoc@gmail.com</a>
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>counter_update_metadata Interface
</title>
</head>
<body>
<h1>
<tt>counter_update_metadata
</tt>
Interface
</h1>
<p>A list-update metadata type that moves elements to the front of the list based on the counter algorithm.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/counter_update_policy.hpp"><tt>counter_update_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type which will be used for counting the number of times a node was accessed.</p>
</td>
<td>
size_t
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>counter_update_policy Interface
</title>
</head>
<body>
<h1>
<tt>counter_update_policy
</tt>
Interface
</h1>
<p>A list-update policy that moves elements to the front of the list based on the counter algorithm.
</p>
<p>This class is likely to slightly change interface when random number generators become part of the C++ standard.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/counter_update_policy.hpp"><tt>counter_update_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">Size definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructor, and related.
</a>
</li>
<li>
<a href = "#link4">Information methods.
</a>
</li>
</ol>
</li>
<li>
Protected Types and Constants:
<ol>
<li>
<a href = "#link5">Metadata definitions.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link6">Metadata operations.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>
size_t
</td>
</tr>
<tr>
<td>
<pre><a name = "Metadata_Reference3735929465">Metadata_Reference</a></pre>
</td>
<td>
<p>Metadata reference type.</p>
</td>
<td>
<pre>std::allocator&lt;
<a href = "counter_update_metadata.html"><tt>counter_update_metadata</tt></a>&gt;::
reference
</td>
</tr>
</table>
<h2>
<a name = "link2">Size definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre><a href = "#Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type used for counting the number of times each node is accessed until the count is reset to 0 and the node moved to the front of the list.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre> counter_update_policy
(<a href = "#size_type3735929547">size_type</a> max_count = 5)</pre>
</td>
<td>
<p>Constructor. <font color = "#666666"><tt>max_count</tt></font> determines the the number of times each node is accessed until the count is reset to 0 and the node moved to the front of the list.</p>
</td>
</tr>
<tr>
<td>
<pre><b>void</b>
swap
(<font color = "olive">counter_update_policy</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Information methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b>
<a href = "#size_type3735929547">size_type</a>
get_max_count
() <b>const</b></pre>
</td>
<td>
<p>Returns the max count of each metadata (number of times it is accessed until moved to the front of the list).</p>
</td>
</tr>
</table>
<h2>
<a name = "link5">Metadata definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "metadata_type3735929937">metadata_type</a></pre>
</td>
<td>
<pre><a href = "counter_update_metadata.html"><tt>counter_update_metadata</tt></a></pre>
</td>
<td>
<p>Metadata on which this functor operates.</p>
</td>
</tr>
<tr>
<td>
<pre><a name = "metadata_reference3735929497">metadata_reference</a></pre>
</td>
<td>
<pre><a href = "#Metadata_Reference3735929465">Metadata_Reference</a></pre>
</td>
<td>
<p>Reference to metadata on which this functor operates.</p>
</td>
</tr>
</table>
<h2>
<a name = "link6">Metadata operations.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a href = "#metadata_type3735929937">metadata_type</a>
<b>operator</b>()
() <b>const</b></pre>
</td>
<td>
<p>Creates a metadata object.</p>
</td>
</tr>
<tr>
<td>
<pre><b>bool</b>
<b>operator</b>()
(<a href = "#metadata_reference3735929497">metadata_reference</a> r_data) <b>const</b></pre>
</td>
<td>
<p>Decides whether a metadata object should be moved to the front of the list.</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>data_enabled_ms_tag Interface
</title>
</head>
<body>
<h1>
<tt>data_enabled_ms_tag
</tt>
Interface
</h1>
<p>Mapping-semantics tag indicating that the container objects maps each key to some datum.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ms_trait.hpp"><tt>ms_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Design</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Design</h1>
<ol>
<li> <a href = "overview.html">Overview</a> describes an overview.</li>
<li> <a href = "concepts.html">Concepts</a> describes some concepts. </li>
<li> <a href = "ds_gen.html">Data-Structure Genericity</a> discusses generic manipulation of containers based on different underlying data-structures.</li>
<li> <a href = "ms_gen.html">Mapping-Semantic Genericity</a> discusses generic manipulation of containers with different mapping semantics.</li>
<li> <a href = "hash_based_containers.html">Hash-Based Containers</a> describes the design and policies of hash-based containers.</li>
<li> <a href = "tree_based_containers.html">Tree-Based Containers</a> describes the design and policies of tree-based containers.</li>
<li> <a href = "lu_based_containers.html">List-Based Containers</a> describes the design and policies of list-based containers with update policies.</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>direct_mask_range_hashing Interface
</title>
</head>
<body>
<h1>
<tt>direct_mask_range_hashing
</tt>
Interface
</h1>
<p>A mask range-hashing class (uses a bit-mask).
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/hash_policy.hpp"><tt>hash_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructor, and related.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link4">Notification methods.
</a>
</li>
<li>
<a href = "#link5">Operators.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>
size_t
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre><a href = "#Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>void</b>
swap
(<font color = "olive">direct_mask_range_hashing</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Notification methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>void</b>
notify_resized
(<a href = "#size_type3735929547">size_type</a> size)</pre>
</td>
<td>
<p>Notifies the policy object that the container's size has changed to <font color = "#666666"><tt>size</tt></font>.</p>
</td>
</tr>
</table>
<h2>
<a name = "link5">Operators.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <a href = "#size_type3735929547">size_type</a>
<b>operator</b>()
(<a href = "#size_type3735929547">size_type</a> hash) <b>const</b></pre>
</td>
<td>
<p>Transforms the hash value <font color = "#666666"><tt>hash</tt></font> into a ranged-hash value (using a bit-mask).</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>direct_mod_range_hashing Interface
</title>
</head>
<body>
<h1>
<tt>direct_mod_range_hashing
</tt>
Interface
</h1>
<p>A mod range-hashing class (uses the modulo function).
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/hash_policy.hpp"><tt>hash_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructor, and related.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link4">Notification methods.
</a>
</li>
<li>
<a href = "#link5">Operators.
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>
size_t
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre><a href = "#Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>void</b>
swap
(<font color = "olive">direct_mod_range_hashing</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Notification methods.
</a>
</h2>
<h2>
<a name = "link5">Operators.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <a href = "#size_type3735929547">size_type</a>
<b>operator</b>()
(<a href = "#size_type3735929547">size_type</a> hash) <b>const</b></pre>
</td>
<td>
<p>Transforms the hash value <font color = "#666666"><tt>hash</tt></font> into a ranged-hash value (using a modulo operation).</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Disclaimer and Copyright</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h2>Disclaimer and Copyright</h2>
<p>
Revised 16 February, 2004
</p>
&copy; Copyright Ami Tavory and Vladimir Dreizin, IBM-HRL, 2004, and Benjamin Kosnik, Red Hat, 2004.
<P>
Permission to use, copy, modify, sell, and distribute this software is hereby granted without fee, provided that the above copyright notice appears in all copies, and that both that copyright notice and this permission notice appear in supporting documentation.
</p>
<P>
None of the above authors, nor IBM Haifa Research Laboratories, Red Hat, or both, make any representation about the suitability of this software for any purpose. It is provided "as is" without express or implied warranty.
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>ds_traits Interface
</title>
</head>
<body>
<h1>
<tt>ds_traits
</tt>
Interface
</h1>
<p>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.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Examples</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Examples</h1>
<ol>
<li><a href = "#basic_usage">Basic use</a></li>
<li><a href = "#generics">Generics</a></li>
<li><a href = "#hash_based">Hash-Based Containers</a></li>
<li><a href = "#tree_based">Tree-Based Containers</a></li>
</ol>
<h2><a name = "basic_usage">Basic Use</a></h2>
<ol>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/basic_map.cc"><tt>basic_map.cc</tt></a>- Basic use of &quot;maps&quot;.</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/basic_set.cc"><tt>basic_set.cc</tt></a>- Basic use of &quot;sets&quot;.
See
<a href = "ms_gen.html#ds_policy">Mapping Semantics::Data Types as a Policy</a>.
</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/basic_multimap.cc"><tt>basic_multimap.cc</tt></a>- Basic use of &quot;multimaps&quot;.
See
<a href = "ms_gen.html#ds_policy">Mapping Semantics::Data Types as a Policy</a>.
</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/erase_if.cc"><tt>erase_if.cc</tt></a>- Conditionally
erasing values from a container object.
See
<a href = "motivation.html#methods">Motivation::Choice of Methods</a>.
</li>
</ol>
<h2><a name = "generics">Generics</a></h2>
<ol>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/ds_traits.cc"><tt>ds_traits.cc</tt></a>-
Using
<a href = "ds_traits.html"><tt>ds_traits</tt></a> to query about underlying
data-structure behaviour.
See
<a href = "ds_gen.html#ds_traits">Data-Structure Genericity::Data-Structure Tags and Traits</a>.
</li>
<li> <a href = "../../../../testsuite/ext/pb_assoc/example/mapping_level.cc"><tt>mapping_level.cc</tt></a>-
Rebinding a compound associative-container to different mapping levels.
See
<a href = "ms_gen.html#mapping_level">Mapping-Semantics::Mapping Levels</a>.
</li>
<li> <a href = "../../../../testsuite/ext/pb_assoc/example/ms_traits.cpp"><tt>ms_traits.cpp</tt></a>-
Using <a href = "ms_traits.html"><tt>ms_traits</tt></a>
to query about mapping semantics.
See
<a href = "ms_gen.html#ms_traits">Mapping-Semantics::Tags and Traits</a>.
</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/cc_ht_extract_key.cc"><tt>cc_ht_extract_key.cc</tt></a>-
Extracting the key from different types.
</li>
</ol>
<h2><a name = "hash_based">Hash-Based Containers</a></h2>
<p>
See
<a href = "hash_based_containers.html">Hash-Based Containers</a>.
</p>
<h3>General</h3>
<ol>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_bad_find.cc"><tt>hash_bad_find.cc</tt></a>-
A non-compiling example showing wrong use of finding keys in hash-based
containers.
See
<a href = "ds_gen.html#find_range">Data-Structure Genericity::Find-Type and Range-Type Methods and Iterators</a>.
</li>
</ol>
<h3>Resize-Related</h3>
<p>See
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_based_containers.html#resize_policies">Hash-Based Containers::Resize Policies</a>.
</p>
<ol>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_initial_size.cc"><tt>hash_initial_size.cc</tt></a>-
Setting the initial size of a hash-based container object.
</li>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_bad_resize.cc"><tt>hash_bad_resize.cc</tt></a>-
A non-compiling example showing how not to resize a hash-based container object.
</li>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_resize.cc"><tt>hash_resize.cc</tt></a>-
Resizing the size of a hash-based container object.
</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/hash_illegal_resize.cc"><tt>hash_illegal_resize.cc</tt></a>-
Showing an illegal resize of a hash-based container object.
</li>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_load_set_change.cc"><tt>hash_load_set_change.cc</tt></a>-
Changing the load factors of a hash-based container object.
</li>
</ol>
<h3>Hash-Related</h3>
<p>See
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_based_containers.html#hash_policies">Hash-Based Containers::Hash Policies</a>.
</p>
<ol>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/hash_mod.cc"><tt>hash_mod.cc</tt></a>-
Using a modulo range-hashing function.
</li>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/store_hash.cc"><tt>store_hash.cc</tt></a>-
Storing the hash value along with each key.
</li>
<li>
<a href = "../../../../testsuite/ext/pb_assoc/example/shift_mask.cc"><tt>shift_mask.cc</tt></a>-
Writing a range-hashing functor.
</li>
<li><a href = "../../../../testsuite/ext/pb_assoc/example/ranged_hash.cc"><tt>ranged_hash.cc</tt></a>-
Writing
a ranged-hash functor.</li>
</ol>
<h2><a name = "tree_based">Tree-Based Containers</a></h2>
<p>
See
<a href = "tree_based_containers.html">Tree-Based Containers</a>.
</p>
<h3>Node-Invariatns</h3>
<p>
See
<a href = "tree_based_containers.html#invariants">Tree-Based Containers::Node Invariants</a>.
</p>
<ol>
<li><a href="../../../../testsuite/ext/pb_assoc/example/tree_order_statistics.cc"><tt>tree_order_statistics.cc</tt></a>-
Using trees for order statistics.
</li>
<li><a href="../../../../testsuite/ext/pb_assoc/example/tree_intervals.cc"><tt>tree_intervals.cc</tt></a>- Augmenting an
<a href = "ov_tree_set.html"><tt>ov_tree_set</tt></a>
to support operations on line intervals.
</li>
</ol>
<h3>Split and Join</h3>
<p>
See
<a href = "tree_based_containers.html#add_methods">Tree-Based Containers::Additional Types and Methods</a>.
</p>
<ol>
<li><a href="../../../../testsuite/ext/pb_assoc/example/tree_join.cc"><tt>tree_join.cc</tt></a>- Joining
two tree-based container objects.
</li>
<li><a href="../../../../testsuite/ext/pb_assoc/example/tree_split.cc"><tt>tree_split.cc</tt></a>- Splitting
a tree-based container object.
</li>
<li><a href="../../../../testsuite/ext/pb_assoc/example/tree_order_statistics_join.cc"><tt>tree_order_statistics_join.cc</tt></a>- Order statistics while joining two tree-based container objects.
</ol>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Exception Guarantee Specifics</title>
</head>
<body bgcolor = "white">
<h1>Exception Guarantee Specifics</h1>
The following represent exception guaratee specifics, subject to the <a href="component_requirements.html#exception_requirements">component exception-requirements</a>.
<ol>
<li> <a name="basic_guarantee">No</a> resources are leaked in the face of exceptions. In particular, this means:
<ol>
<li>By the time a container's destructor completes:
<ol>
<li>It has returned all memory it has allocated to the appropriate deallocation function.</li>
<li>The destructor has been called for all objects constructed by the container.</li>
</ol>
<li>Algorithms destroy all temporary objects and deallocate all temporary memory even if the algorithm does not complete due to an exception.</li>
<li>Algorithms which construct objects either complete successfully or destroy any objects they have constructed at the time of the exception.</li>
<li>Algorithms which destruct objects always succeed.</li>
<li>Containers continue to fulfill all of their requirements, even after an exception occurs during a mutating function. For example, they will never give an inaccurate report of its size, or fail to meet performance requirements because of some thrown exception.</li>
</ol>
</li>
<li> <a name="strong_guarantee">The</a> <i>strong guarantee</i>: If an operation on a container fails due to an exception, then, semantically, the operation is a no-op applied to the container.</li>
<li> <a name="cannot_throw_guarantee">The</a> operation cannot throw an exception.</li>
</ol>
(The phrasing of the above is based on <a href="references.html#abrahams97exception">[abrahams97exception]</a>.)
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>find_invalidation_guarantee Interface
</title>
</head>
<body>
<h1>
<tt>find_invalidation_guarantee
</tt>
Interface
</h1>
<p>Signifies an invalidation guarantee that includes all those of its base, and additionally, that any find-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.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_invalidation_guarantee.html"><tt>basic_invalidation_guarantee</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Generics</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Generics</h1>
<p>
Naturally, the ability to program generically different associative containers, is beneficial.
The distinction in this library between <a href = "data_type_defs.html">data_type</a>s and
<a href = "mapped_data_type_defs.html">mapped_data_type</a>s, and between <a href = "value_type_defs.html">value_type</a>s and
<a href = "mapped_value_type_defs.html">mapped_value_type</a>s, somewhat complicates this.
</p>
<p>
The generic utility classes ease static detection of different associative-container
types (<i>e.g.</i>, whether they are map or multimap types), and the extraction of data from iterators.
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>gp_hash_ds_tag Interface
</title>
</head>
<body>
<h1>
<tt>gp_hash_ds_tag
</tt>
Interface
</h1>
<p>General-probing hash data-structure tag.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/ds_trait.hpp"><tt>ds_trait.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Base classes.
</a>
</li>
</ol>
<h2>
<a name = "link1">Base classes.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "80%" ALIGN = "left"><b>Class</b></TD><TD Width = "20%" ALIGN = "left"><b>Derivation Type</b></TD></TR>
<tr>
<td>
<pre><a href = "basic_hash_ds_tag.html"><tt>basic_hash_ds_tag</tt></a></pre>
</td>
<td>
<p>public</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Hash and Probe Policies</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Hash and Probe Policies</h1>
<p>
As mentioned in
<a href = "hash_policies.html">Hash Policies</a>,
some of the containers require a ranged-hash function policy for
mapping key types into a non-negative integral type in a range.
<i>E.g.</i>, collision-based containers
(<a href = "cc_ht_map_interface.html"><tt>cc_ht_map</tt></a>,
<a href = "cc_ht_set_interface.html"><tt>cc_ht_set</tt></a>,
<a href = "cc_ht_multimap_interface.html"><tt>cc_ht_multimap</tt></a>,
and
<a href = "cc_ht_multiset_interface.html"><tt>cc_ht_multiset</tt></a>),
require a ranged-hash function.
</p>
<p>
Similarly, some hash tables
need a ranged-probe function policy for mapping
key types into a sequence of non-negative integral types in a range.
<i>E.g.</i>, probing-based containers
(<a href = "gp_ht_map_interface.html"><tt>gp_ht_map</tt></a>,
<a href = "gp_ht_set_interface.html"><tt>gp_ht_set</tt></a>,
<a href = "gp_ht_multimap_interface.html"><tt>gp_ht_multimap</tt></a>,
and
<a href = "gp_ht_multiset_interface.html"><tt>gp_ht_multiset</tt></a>),
require a ranged-hash function.
</p>
<p>
<a href = "interface.html#policy_classes">Policy Classes</a>
contains classes for creating ranged-hash and ranged-probe function policies.
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>hash_exponential_size_policy Interface
</title>
</head>
<body>
<h1>
<tt>hash_exponential_size_policy
</tt>
Interface
</h1>
<p>A size policy whose sequence of sizes form an exponential sequence (typically powers of 2)
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/hash_policy.hpp"><tt>hash_policy.hpp</tt>
</a>
</li>
<li>
<a href = "#link1">Template parameters.
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link2">General definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link3">Constructors, destructors, and related methods.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link4">Size methods
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">Template parameters.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "20%" ALIGN = "left"><b>Parameter</b></TD><TD Width = "50%" ALIGN = "left"><b>Description</b></TD><TD Width = "30%" ALIGN = "left"><b>Default Value</b></TD></TR>
<tr>
<td>
<pre><a name = "Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
<td>
size_t
</td>
</tr>
</table>
<h2>
<a name = "link2">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre><a href = "#Size_Type3735929483">Size_Type</a></pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Constructors, destructors, and related methods.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre> hash_exponential_size_policy
(<a href = "#size_type3735929547">size_type</a> start_size = 8,
<a href = "#size_type3735929547">size_type</a> grow_factor = 2)</pre>
</td>
<td>
<p>Default constructor, or onstructor taking a <font color = "#666666"><tt>start_size</tt></font>, a start size and <font color = "#666666"><tt>grow_factor</tt></font>, a growth factor. The policy will use the sequence of sizes <font color = "#666666"><tt>start_size</tt></font>, <font color = "#666666"><tt>start_size</tt></font> * <font color = "#666666"><tt>grow_factor</tt></font>, <font color = "#666666"><tt>start_size</tt></font> * <font color = "#666666"><tt>grow_factor</tt></font>^2, ...</p>
</td>
</tr>
<tr>
<td>
<pre><b>void</b>
swap
(<font color = "olive">hash_exponential_size_policy</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link4">Size methods
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a href = "#size_type3735929547">size_type</a>
get_init_size
(<a href = "#size_type3735929547">size_type</a> suggested_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>suggested_size</tt></font>, a suggested size, returns an initial size of the container related to the initial size.</p>
</td>
</tr>
<tr>
<td>
<pre><a href = "#size_type3735929547">size_type</a>
get_nearest_larger_size
(<a href = "#size_type3735929547">size_type</a> cur_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>cur_size</tt></font>, the current size, returns a size that is larger.</p>
</td>
</tr>
<tr>
<td>
<pre><a href = "#size_type3735929547">size_type</a>
get_nearest_smaller_size
(<a href = "#size_type3735929547">size_type</a> cur_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>cur_size</tt></font>, the current size, returns a size that is smaller.</p>
</td>
</tr>
</table>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>Hash Functions</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body bgcolor = "white">
<h1>Hash Functions</h1>
<p>
A hash function is essentially an <tt>std::unary_operator</tt>. It takes a
<a href = "key_type_defs.html"><tt>const_key_reference</tt></a>, and returns
a (non-negative) integral type.
</p>
<p>
A special hash function, <a href = "null_hash_fn.html"><tt>null_hash_fn</tt></a>
serves to indicate that the <a href = "hash_policies.html">ranged-hash</a> function
or <a href = "hash_policies.html">ranged-probe</a> function should not be formed by composition.
</p>
</body>
</html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>hash_prime_size_policy Interface
</title>
</head>
<body>
<h1>
<tt>hash_prime_size_policy
</tt>
Interface
</h1>
<p>A size policy whose sequence of sizes form a nearly-exponential sequence of primes.
</p>
<ol>
<li>
<a href = "../../../../include/ext/pb_assoc/hash_policy.hpp"><tt>hash_policy.hpp</tt>
</a>
</li>
<li>
Public Types and Constants:
<ol>
<li>
<a href = "#link1">General definitions.
</a>
</li>
</ol>
</li>
<li>
Public Methods:
<ol>
<li>
<a href = "#link2">Constructors, destructor, and related.
</a>
</li>
</ol>
</li>
<li>
Protected Methods:
<ol>
<li>
<a href = "#link3">Size methods
</a>
</li>
</ol>
</li>
</ol>
<h2>
<a name = "link1">General definitions.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "30%" ALIGN = "left"><b>Type</b></TD><TD Width = "55%" ALIGN = "left"><b>Definition</b></TD><TD Width = "15%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><a name = "size_type3735929547">size_type</a></pre>
</td>
<td>
<pre>size_t</pre>
</td>
<td>
<p>Size type.</p>
</td>
</tr>
</table>
<h2>
<a name = "link2">Constructors, destructor, and related.
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <b>void</b>
swap
(<font color = "olive">hash_prime_size_policy</font> &amp;r_other)</pre>
</td>
<td>
<p>Swaps content.</p>
</td>
</tr>
</table>
<h2>
<a name = "link3">Size methods
</a>
</h2>
<table WIDTH = "100%" BORDER = "1">
<TR><TD Width = "45%" ALIGN = "left"><b>Method</b></TD><TD Width = "55%" ALIGN = "left"><b>Description</b></TD></TR>
<tr>
<td>
<pre><b>inline</b> <a href = "#size_type3735929547">size_type</a>
get_init_size
(<a href = "#size_type3735929547">size_type</a> suggested_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>suggested_size</tt></font>, a suggested size, returns an initial size of the container related to the initial size.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <a href = "#size_type3735929547">size_type</a>
get_nearest_larger_size
(<a href = "#size_type3735929547">size_type</a> cur_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>cur_size</tt></font>, the current size, returns a size that is larger.</p>
</td>
</tr>
<tr>
<td>
<pre><b>inline</b> <a href = "#size_type3735929547">size_type</a>
get_nearest_smaller_size
(<a href = "#size_type3735929547">size_type</a> cur_size) <b>const</b></pre>
</td>
<td>
<p>Given <font color = "#666666"><tt>cur_size</tt></font>, the current size, returns a size that is smaller.</p>
</td>
</tr>
</table>
</body>
</html>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment