aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/common/symbols.cpp
diff options
context:
space:
mode:
authorGravatar Mathieu Vaillancourt <vaillancourtm@gmail.com>2014-04-12 18:57:58 -0400
committerGravatar Mathieu Vaillancourt <vaillancourtm@gmail.com>2014-04-12 19:04:31 -0400
commitd046cfbba1dd2bcdad4ace3be706dadf3f6cc288 (patch)
treed880f04c199bd08751b4f30a4eee5939d56e06cd /src/common/symbols.cpp
parentec19c679d7ef17bea86f86f5e393331d6032ed5a (diff)
Add symbols map
Diffstat (limited to 'src/common/symbols.cpp')
-rw-r--r--src/common/symbols.cpp57
1 files changed, 57 insertions, 0 deletions
diff --git a/src/common/symbols.cpp b/src/common/symbols.cpp
new file mode 100644
index 00000000..dcc9eeac
--- /dev/null
+++ b/src/common/symbols.cpp
@@ -0,0 +1,57 @@
+// Copyright 2014 Citra Emulator Project
+// Licensed under GPLv2
+// Refer to the license.txt file included.
+
+#include "common/symbols.h"
+
+TSymbolsMap g_symbols;
+
+namespace Symbols
+{
+ bool HasSymbol(u32 _address)
+ {
+ return g_symbols.find(_address) != g_symbols.end();
+ }
+
+ void Add(u32 _address, const std::string& _name, u32 _size, u32 _type)
+ {
+ if (!HasSymbol(_address))
+ {
+ TSymbol symbol;
+ symbol.address = _address;
+ symbol.name = _name;
+ symbol.size = _size;
+ symbol.type = _type;
+
+ g_symbols.insert(TSymbolsPair(_address, symbol));
+ }
+ }
+
+ TSymbol GetSymbol(u32 _address)
+ {
+ TSymbolsMap::iterator foundSymbolItr;
+ TSymbol symbol;
+
+ foundSymbolItr = g_symbols.find(_address);
+ if (foundSymbolItr != g_symbols.end())
+ {
+ symbol = (*foundSymbolItr).second;
+ }
+
+ return symbol;
+ }
+ const std::string& GetName(u32 _address)
+ {
+ return GetSymbol(_address).name;
+ }
+
+ void Remove(u32 _address)
+ {
+ g_symbols.erase(_address);
+ }
+
+ void Clear()
+ {
+ g_symbols.clear();
+ }
+} \ No newline at end of file