1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef DataEquivalency_h 6 #define DataEquivalency_h 7 8 #include "wtf/OwnPtr.h" 9 #include "wtf/RefPtr.h" 10 11 namespace blink { 12 13 template <typename T> 14 bool dataEquivalent(const T* a, const T* b) 15 { 16 if (a == b) 17 return true; 18 if (!a || !b) 19 return false; 20 return *a == *b; 21 } 22 23 template <typename T> 24 bool dataEquivalent(const RefPtr<T>& a, const RefPtr<T>& b) 25 { 26 return dataEquivalent(a.get(), b.get()); 27 } 28 29 template <typename T> 30 bool dataEquivalent(const Persistent<T>& a, const Persistent<T>& b) 31 { 32 return dataEquivalent(a.get(), b.get()); 33 } 34 35 template <typename T> 36 bool dataEquivalent(const Member<T>& a, const Member<T>& b) 37 { 38 return dataEquivalent(a.get(), b.get()); 39 } 40 41 template <typename T> 42 bool dataEquivalent(const OwnPtr<T>& a, const OwnPtr<T>& b) 43 { 44 return dataEquivalent(a.get(), b.get()); 45 } 46 47 } // namespace blink 48 49 #endif // DataEquivalency_h 50