symbols.cpp 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Copyright 2014 Citra Emulator Project
  2. // Licensed under GPLv2
  3. // Refer to the license.txt file included.
  4. #include "common/symbols.h"
  5. TSymbolsMap g_symbols;
  6. namespace Symbols
  7. {
  8. bool HasSymbol(u32 _address)
  9. {
  10. return g_symbols.find(_address) != g_symbols.end();
  11. }
  12. void Add(u32 _address, const std::string& _name, u32 _size, u32 _type)
  13. {
  14. if (!HasSymbol(_address))
  15. {
  16. TSymbol symbol;
  17. symbol.address = _address;
  18. symbol.name = _name;
  19. symbol.size = _size;
  20. symbol.type = _type;
  21. g_symbols.insert(TSymbolsPair(_address, symbol));
  22. }
  23. }
  24. TSymbol GetSymbol(u32 _address)
  25. {
  26. TSymbolsMap::iterator foundSymbolItr;
  27. TSymbol symbol;
  28. foundSymbolItr = g_symbols.find(_address);
  29. if (foundSymbolItr != g_symbols.end())
  30. {
  31. symbol = (*foundSymbolItr).second;
  32. }
  33. return symbol;
  34. }
  35. const std::string GetName(u32 _address)
  36. {
  37. return GetSymbol(_address).name;
  38. }
  39. void Remove(u32 _address)
  40. {
  41. g_symbols.erase(_address);
  42. }
  43. void Clear()
  44. {
  45. g_symbols.clear();
  46. }
  47. }