diff options
| author | bunnei <bunneidev@gmail.com> | 2018-01-01 13:25:37 -0500 |
|---|---|---|
| committer | bunnei <bunneidev@gmail.com> | 2018-01-01 13:25:37 -0500 |
| commit | fba61b93c773584ba572bb6d10217a0bdf8a303d (patch) | |
| tree | c8b7609452a02d1fac36528b30ba3aa1062625a4 /src/core/hle/kernel/object_address_table.cpp | |
| parent | 57d3544f96ef407df2229f469a741b73a45b0d88 (diff) | |
kernel: Add ObjectAddressTable class.
Diffstat (limited to 'src/core/hle/kernel/object_address_table.cpp')
| -rw-r--r-- | src/core/hle/kernel/object_address_table.cpp | 34 |
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 0000000000..dda532a88b --- /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 |
