From d046cfbba1dd2bcdad4ace3be706dadf3f6cc288 Mon Sep 17 00:00:00 2001 From: Mathieu Vaillancourt Date: Sat, 12 Apr 2014 18:57:58 -0400 Subject: Add symbols map --- src/common/symbols.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/common/symbols.cpp (limited to 'src/common/symbols.cpp') 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 -- cgit v1.2.3