From 26a029d407be480d791972afb5975cf62c9360a6 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 19 Apr 2024 02:47:55 +0200 Subject: Adding upstream version 124.0.1. Signed-off-by: Daniel Baumann --- xpcom/ds/nsAtomHashKeys.h | 51 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 xpcom/ds/nsAtomHashKeys.h (limited to 'xpcom/ds/nsAtomHashKeys.h') diff --git a/xpcom/ds/nsAtomHashKeys.h b/xpcom/ds/nsAtomHashKeys.h new file mode 100644 index 0000000000..85aed03bd0 --- /dev/null +++ b/xpcom/ds/nsAtomHashKeys.h @@ -0,0 +1,51 @@ +/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim: set ts=8 sts=2 et sw=2 tw=80: */ +/* This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +/* Definitions for nsAtom-related hash keys */ + +#ifndef nsAtomHashKeys_h +#define nsAtomHashKeys_h + +#include "nsAtom.h" +#include "nsHashKeys.h" + +// TODO(emilio): Consider removing this and specializing AddToHash instead +// once bug 1849386 is fixed. + +// Hash keys suitable for use in nsTHashTable. +struct nsAtomHashKey : public nsRefPtrHashKey { + using nsRefPtrHashKey::nsRefPtrHashKey; + static PLDHashNumber HashKey(KeyTypePointer aKey) { + return MOZ_LIKELY(aKey) ? aKey->hash() : 0; + } +}; + +struct nsWeakAtomHashKey : public nsPtrHashKey { + using nsPtrHashKey::nsPtrHashKey; + static PLDHashNumber HashKey(KeyTypePointer aKey) { + return nsAtomHashKey::HashKey(aKey); + } +}; + +// Hash keys suitable for use in mozilla::HashMap. +namespace mozilla { + +struct AtomHashKey { + RefPtr mKey; + + explicit AtomHashKey(nsAtom* aAtom) : mKey(aAtom) {} + + using Lookup = nsAtom*; + + static HashNumber hash(const Lookup& aKey) { return aKey->hash(); } + static bool match(const AtomHashKey& aFirst, const Lookup& aSecond) { + return aFirst.mKey == aSecond; + } +}; + +} // namespace mozilla + +#endif // nsAtomHashKeys_h -- cgit v1.2.3