Ignore:
Timestamp:
Apr 11, 2008, 4:17:21 PM (17 years ago)
Author:
Antti Koivisto
Message:

2008-04-11 Antti Koivisto <Antti Koivisto>

Reviewed by Maciej.


Add default hash for pairs of hashable types.

  • wtf/HashFunctions.h: (WTF::PairHash::hash): (WTF::PairHash::equal): (WTF::):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/wtf/HashFunctions.h

    r31343 r31824  
    128128    template<typename T> struct DefaultHash;
    129129
     130    template<typename T, typename U> struct PairHash {
     131        static unsigned hash(const std::pair<T, U>& p)
     132        {
     133            return intHash((static_cast<uint64_t>(DefaultHash<T>::Hash::hash(p.first)) << 32 | DefaultHash<U>::Hash::hash(p.second)));
     134        }
     135        static bool equal(const std::pair<T, U>& a, const std::pair<T, U>& b)
     136        {
     137            return DefaultHash<T>::Hash::equal(a.first, b.first) && DefaultHash<U>::Hash::equal(a.second, b.second);
     138        }
     139        static const bool safeToCompareToEmptyOrDeleted = DefaultHash<T>::Hash::safeToCompareToEmptyOrDeleted
     140                                                            && DefaultHash<U>::Hash::safeToCompareToEmptyOrDeleted;
     141    };
     142
    130143    // make IntHash the default hash function for many integer types
    131144
     
    151164    template<typename P> struct DefaultHash<RefPtr<P> > { typedef PtrHash<RefPtr<P> > Hash; };
    152165
     166    template<typename T, typename U> struct DefaultHash<std::pair<T, U> > { typedef PairHash<T, U> Hash; };
     167
    153168} // namespace WTF
    154169
Note: See TracChangeset for help on using the changeset viewer.