| Index: net/tools/balsa/string_piece_utils.h
|
| diff --git a/net/tools/balsa/string_piece_utils.h b/net/tools/balsa/string_piece_utils.h
|
| index eb0eaf365c83c03afb82b0a419be1094649dfc02..12fc69be85fca9e2ccda824d50774bada11dc587 100644
|
| --- a/net/tools/balsa/string_piece_utils.h
|
| +++ b/net/tools/balsa/string_piece_utils.h
|
| @@ -12,6 +12,34 @@
|
|
|
| namespace net {
|
|
|
| +#if defined(COMPILER_MSVC)
|
| +struct StringPieceCaseCompare {
|
| + static const size_t bucket_size = 4;
|
| +
|
| + size_t operator()(const base::StringPiece& sp) const {
|
| + // based on __stl_string_hash in http://www.sgi.com/tech/stl/string
|
| + size_t hash_val = 0;
|
| + for (base::StringPiece::const_iterator it = sp.begin();
|
| + it != sp.end(); ++it) {
|
| + hash_val = 5 * hash_val + tolower(*it);
|
| + }
|
| + return hash_val;
|
| + }
|
| +
|
| + bool operator()(const base::StringPiece& sp1,
|
| + const base::StringPiece& sp2) const {
|
| + size_t len1 = sp1.length();
|
| + size_t len2 = sp2.length();
|
| + bool sp1_shorter = len1 < len2;
|
| + size_t len = sp1_shorter ? len1 : len2;
|
| + int rv = _memicmp(sp1.data(), sp2.data(), len);
|
| + if (rv == 0) {
|
| + return sp1_shorter;
|
| + }
|
| + return rv < 0;
|
| + }
|
| +};
|
| +#else // COMPILER_MSVC
|
| struct StringPieceCaseHash {
|
| size_t operator()(const base::StringPiece& sp) const {
|
| // based on __stl_string_hash in http://www.sgi.com/tech/stl/string
|
| @@ -23,6 +51,7 @@ struct StringPieceCaseHash {
|
| return hash_val;
|
| }
|
| };
|
| +#endif // COMPILER_MSVC
|
|
|
| struct StringPieceUtils {
|
| static bool EqualIgnoreCase(const base::StringPiece& piece1,
|
|
|