From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- dom/media/platforms/SimpleMap.h | 55 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 dom/media/platforms/SimpleMap.h (limited to 'dom/media/platforms/SimpleMap.h') diff --git a/dom/media/platforms/SimpleMap.h b/dom/media/platforms/SimpleMap.h new file mode 100644 index 0000000000..c26bff1e9a --- /dev/null +++ b/dom/media/platforms/SimpleMap.h @@ -0,0 +1,55 @@ +/* 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/. */ + +#ifndef mozilla_SimpleMap_h +#define mozilla_SimpleMap_h + +#include "mozilla/Mutex.h" +#include "nsTArray.h" + +#include + +namespace mozilla { + +template +class SimpleMap { + public: + typedef std::pair Element; + + SimpleMap() : mMutex("SimpleMap") {} + + // Insert Key and Value pair at the end of our map. + void Insert(int64_t aKey, const T& aValue) { + MutexAutoLock lock(mMutex); + mMap.AppendElement(std::make_pair(aKey, aValue)); + } + // Sets aValue matching aKey and remove it from the map if found. + // The element returned is the first one found. + // Returns true if found, false otherwise. + bool Find(int64_t aKey, T& aValue) { + MutexAutoLock lock(mMutex); + for (uint32_t i = 0; i < mMap.Length(); i++) { + Element& element = mMap[i]; + if (element.first == aKey) { + aValue = element.second; + mMap.RemoveElementAt(i); + return true; + } + } + return false; + } + // Remove all elements of the map. + void Clear() { + MutexAutoLock lock(mMutex); + mMap.Clear(); + } + + private: + Mutex mMutex MOZ_UNANNOTATED; // To protect mMap. + AutoTArray mMap; +}; + +} // namespace mozilla + +#endif // mozilla_SimpleMap_h -- cgit v1.2.3