summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/object_address_table.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/hle/kernel/object_address_table.cpp')
-rw-r--r--src/core/hle/kernel/object_address_table.cpp34
1 files changed, 34 insertions, 0 deletions
diff --git a/src/core/hle/kernel/object_address_table.cpp b/src/core/hle/kernel/object_address_table.cpp
new file mode 100644
index 000000000..dda532a88
--- /dev/null
+++ b/src/core/hle/kernel/object_address_table.cpp
@@ -0,0 +1,34 @@
+// Copyright 2018 Citra Emulator Project
+// Licensed under GPLv2 or any later version
+// Refer to the license.txt file included.
+
+#include "common/assert.h"
+#include "core/hle/kernel/object_address_table.h"
+
+namespace Kernel {
+
+ObjectAddressTable g_object_address_table;
+
+void ObjectAddressTable::Insert(VAddr addr, SharedPtr<Object> obj) {
+ ASSERT_MSG(objects.find(addr) == objects.end(), "Object already exists with addr=0x%llx", addr);
+ objects[addr] = obj;
+}
+
+void ObjectAddressTable::Close(VAddr addr) {
+ ASSERT_MSG(objects.find(addr) != objects.end(), "Object does not exist with addr=0x%llx", addr);
+ objects.erase(addr);
+}
+
+SharedPtr<Object> ObjectAddressTable::GetGeneric(VAddr addr) const {
+ auto iter = objects.find(addr);
+ if (iter != objects.end()) {
+ return iter->second;
+ }
+ return {};
+}
+
+void ObjectAddressTable::Clear() {
+ objects.clear();
+}
+
+} // namespace Kernel