Home | History | Annotate | Download | only in geometry
      1 /*
      2  * Copyright (C) 2006, 2008 Apple Inc. All rights reserved.
      3  *
      4  * This library is free software; you can redistribute it and/or
      5  * modify it under the terms of the GNU Library General Public
      6  * License as published by the Free Software Foundation; either
      7  * version 2 of the License, or (at your option) any later version.
      8  *
      9  * This library is distributed in the hope that it will be useful,
     10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
     11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
     12  * Library General Public License for more details.
     13  *
     14  * You should have received a copy of the GNU Library General Public License
     15  * along with this library; see the file COPYING.LIB.  If not, write to
     16  * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
     17  * Boston, MA 02110-1301, USA.
     18  *
     19  */
     20 #ifndef IntSizeHash_h
     21 #define IntSizeHash_h
     22 
     23 #include "platform/geometry/IntSize.h"
     24 #include "wtf/HashMap.h"
     25 #include "wtf/HashSet.h"
     26 
     27 namespace WTF {
     28 
     29 template<> struct IntHash<blink::IntSize> {
     30     static unsigned hash(const blink::IntSize& key) { return pairIntHash(key.width(), key.height()); }
     31     static bool equal(const blink::IntSize& a, const blink::IntSize& b) { return a == b; }
     32     static const bool safeToCompareToEmptyOrDeleted = true;
     33 };
     34 
     35 template<> struct DefaultHash<blink::IntSize> {
     36     typedef IntHash<blink::IntSize> Hash;
     37 };
     38 
     39 template<> struct HashTraits<blink::IntSize> : GenericHashTraits<blink::IntSize> {
     40     static const bool emptyValueIsZero = true;
     41     static const bool needsDestruction = false;
     42     static void constructDeletedValue(blink::IntSize& slot, bool) { new (NotNull, &slot) blink::IntSize(-1, -1); }
     43     static bool isDeletedValue(const blink::IntSize& value) { return value.width() == -1 && value.height() == -1; }
     44 };
     45 
     46 } // namespace WTF
     47 
     48 #endif
     49