summaryrefslogtreecommitdiffstats
path: root/dom/media/platforms/SimpleMap.h
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 17:32:43 +0000
commit6bf0a5cb5034a7e684dcc3500e841785237ce2dd (patch)
treea68f146d7fa01f0134297619fbe7e33db084e0aa /dom/media/platforms/SimpleMap.h
parentInitial commit. (diff)
downloadthunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.tar.xz
thunderbird-6bf0a5cb5034a7e684dcc3500e841785237ce2dd.zip
Adding upstream version 1:115.7.0.upstream/1%115.7.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'dom/media/platforms/SimpleMap.h')
-rw-r--r--dom/media/platforms/SimpleMap.h55
1 files changed, 55 insertions, 0 deletions
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 <utility>
+
+namespace mozilla {
+
+template <typename T>
+class SimpleMap {
+ public:
+ typedef std::pair<int64_t, T> 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<Element, 16> mMap;
+};
+
+} // namespace mozilla
+
+#endif // mozilla_SimpleMap_h