summaryrefslogtreecommitdiffstats
path: root/src/core/hle/kernel/object_address_table.cpp
diff options
context:
space:
mode:
authorbunnei <bunneidev@gmail.com>2018-01-01 19:25:37 +0100
committerbunnei <bunneidev@gmail.com>2018-01-01 19:25:37 +0100
commitd0046b120a6be248cabb69c4394b7e6f01b6d520 (patch)
treec8b7609452a02d1fac36528b30ba3aa1062625a4 /src/core/hle/kernel/object_address_table.cpp
parentthread: Keep track of the initially created handle. (diff)
downloadyuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar.gz
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar.bz2
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar.lz
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar.xz
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.tar.zst
yuzu-d0046b120a6be248cabb69c4394b7e6f01b6d520.zip
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