From 452ab8cf306444d6e2fc1503d68d91ef8a544f1e Mon Sep 17 00:00:00 2001 From: Daniel James Date: Wed, 2 May 2007 23:59:14 +0000 Subject: [PATCH] Remove use of quickbook 1.4 features from unordered container documentation, so it'll build with quickbook 1.3 (will put them back soon-ish). [SVN r3995] --- doc/comparison.qbk | 5 +---- doc/hash_equality.qbk | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/doc/comparison.qbk b/doc/comparison.qbk index e36e3064..532e63b0 100644 --- a/doc/comparison.qbk +++ b/doc/comparison.qbk @@ -14,10 +14,7 @@ ] [ [`Compare` exposed by member typedef `key_compare`, accessed by member function `key_comp()`] - [ - `Hash` exposed by member typedef `hasher`, accessed by member function `hash_function()`. - - `Pred` by member typedef `key_equal` and member function `key_eq()`.] + [`Hash` exposed by member typedef `hasher`, accessed by member function `hash_function()`.\n`Pred` by member typedef `key_equal` and member function `key_eq()`.] ] [ [Member typedef `value_compare` supplies an ordering comparison for member elements, accessed by member function `value_comp()`.] diff --git a/doc/hash_equality.qbk b/doc/hash_equality.qbk index e2844a07..9fdbb798 100644 --- a/doc/hash_equality.qbk +++ b/doc/hash_equality.qbk @@ -34,9 +34,37 @@ Alternatively, you might wish to use a different equality function. If so, make sure you use a hash function that matches it. For example, a case-insensitive dictionary: -[import src_code/insensitive.cpp] -[case_insensitive_functions] -[case_insensitive_dictionary] + struct iequal_to + : std::binary_function + { + bool operator()(std::string const& x, + std::string const& y) const + { + return boost::algorithm::iequals(x, y); + } + }; + + struct ihash + : std::unary_function + { + bool operator()(std::string const& x) const + { + std::size_t seed = 0; + + for(std::string::const_iterator it = x.begin(); + it != x.end(); ++it) + { + boost::hash_combine(seed, std::toupper(*it)); + } + + return seed; + } + }; + + struct word_info; + + boost::unordered_map + idictionary; A more generic version of this example is available at: [@../../libs/unordered/examples/case_insensitive.hpp /libs/unordered/examples/case_insensitive.hpp]