1// -*- C++ -*- 2 3// Copyright (C) 2005-2015 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the terms 7// of the GNU General Public License as published by the Free Software 8// Foundation; either version 3, or (at your option) any later 9// version. 10 11// This library is distributed in the hope that it will be useful, but 12// WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14// General Public License for more details. 15 16// Under Section 7 of GPL version 3, you are granted additional 17// permissions described in the GCC Runtime Library Exception, version 18// 3.1, as published by the Free Software Foundation. 19 20// You should have received a copy of the GNU General Public License and 21// a copy of the GCC Runtime Library Exception along with this program; 22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23// <http://www.gnu.org/licenses/>. 24 25// Copyright (C) 2004 Ami Tavory and Vladimir Dreizin, IBM-HRL. 26 27// Permission to use, copy, modify, sell, and distribute this software 28// is hereby granted without fee, provided that the above copyright 29// notice appears in all copies, and that both that copyright notice 30// and this permission notice appear in supporting documentation. None 31// of the above authors, nor IBM Haifa Research Laboratories, make any 32// representation about the suitability of this software for any 33// purpose. It is provided "as is" without express or implied 34// warranty. 35 36/** 37 * @file cc_hash_table_map_/cmp_fn_imps.hpp 38 * Contains implementations of cc_ht_map_'s entire container comparison related 39 * functions. 40 */ 41 42PB_DS_CLASS_T_DEC 43template<typename Other_HT_Map_Type> 44bool 45PB_DS_CLASS_C_DEC:: 46operator==(const Other_HT_Map_Type& other) const 47{ return cmp_with_other(other); } 48 49PB_DS_CLASS_T_DEC 50template<typename Other_Map_Type> 51bool 52PB_DS_CLASS_C_DEC:: 53cmp_with_other(const Other_Map_Type& other) const 54{ 55 if (size() != other.size()) 56 return false; 57 58 for (typename Other_Map_Type::const_iterator it = other.begin(); 59 it != other.end(); ++it) 60 { 61 key_const_reference r_key = key_const_reference(PB_DS_V2F(*it)); 62 63 mapped_const_pointer p_mapped_value = 64 const_cast<PB_DS_CLASS_C_DEC& >(*this). 65 find_key_pointer(r_key, traits_base::m_store_extra_indicator); 66 67 if (p_mapped_value == 0) 68 return false; 69 70#ifdef PB_DS_DATA_TRUE_INDICATOR 71 if (p_mapped_value->second != it->second) 72 return false; 73#endif 74 } 75 return true; 76} 77 78PB_DS_CLASS_T_DEC 79template<typename Other_HT_Map_Type> 80bool 81PB_DS_CLASS_C_DEC:: 82operator!=(const Other_HT_Map_Type& other) const 83{ return !operator==(other); } 84