SymbolDB: Use an enum class for representing symbol type

This commit is contained in:
Lioncash 2016-09-13 21:01:35 -04:00
parent d8d127df25
commit 0ac77b0288
8 changed files with 16 additions and 15 deletions

View File

@ -23,10 +23,10 @@ struct SCall
struct Symbol
{
enum
enum class Type
{
SYMBOL_FUNCTION = 0,
SYMBOL_DATA = 1,
Function,
Data,
};
std::string name;
@ -37,7 +37,7 @@ struct Symbol
u32 flags = 0;
int size = 0;
int numCalls = 0;
int type = SYMBOL_FUNCTION;
Type type = Type::Function;
int index = 0; // only used for coloring the disasm view
int analyzed = 0;
};

View File

@ -182,14 +182,14 @@ bool ElfReader::LoadSymbols()
if (bRelocate)
value += sectionAddrs[sectionIndex];
int symtype = Symbol::SYMBOL_DATA;
auto symtype = Symbol::Type::Data;
switch (type)
{
case STT_OBJECT:
symtype = Symbol::SYMBOL_DATA;
symtype = Symbol::Type::Data;
break;
case STT_FUNC:
symtype = Symbol::SYMBOL_FUNCTION;
symtype = Symbol::Type::Function;
break;
default:
continue;

View File

@ -186,7 +186,7 @@ int PPCDebugInterface::GetColor(unsigned int address)
Symbol* symbol = g_symbolDB.GetSymbolFromAddr(address);
if (!symbol)
return 0xFFFFFF;
if (symbol->type != Symbol::SYMBOL_FUNCTION)
if (symbol->type != Symbol::Type::Function)
return 0xEEEEFF;
return colors[symbol->index % 6];
}

View File

@ -170,7 +170,7 @@ int DSPDebugInterface::GetColor(unsigned int address)
Symbol* symbol = DSPSymbols::g_dsp_symbol_db.GetSymbolFromAddr(addr);
if (!symbol)
return 0xFFFFFF;
if (symbol->type != Symbol::SYMBOL_FUNCTION)
if (symbol->type != Symbol::Type::Function)
return 0xEEEEFF;
return colors[symbol->index % 6];
}

View File

@ -47,13 +47,14 @@ Symbol* PPCSymbolDB::AddFunction(u32 startAddr)
return nullptr; // found a dud :(
// LOG(OSHLE, "Symbol found at %08x", startAddr);
functions[startAddr] = tempFunc;
tempFunc.type = Symbol::SYMBOL_FUNCTION;
tempFunc.type = Symbol::Type::Function;
checksumToFunction[tempFunc.hash] = &(functions[startAddr]);
return &functions[startAddr];
}
}
void PPCSymbolDB::AddKnownSymbol(u32 startAddr, u32 size, const std::string& name, int type)
void PPCSymbolDB::AddKnownSymbol(u32 startAddr, u32 size, const std::string& name,
Symbol::Type type)
{
XFuncMap::iterator iter = functions.find(startAddr);
if (iter != functions.end())
@ -72,7 +73,7 @@ void PPCSymbolDB::AddKnownSymbol(u32 startAddr, u32 size, const std::string& nam
tf.name = name;
tf.type = type;
tf.address = startAddr;
if (tf.type == Symbol::SYMBOL_FUNCTION)
if (tf.type == Symbol::Type::Function)
{
PPCAnalyst::AnalyzeFunction(startAddr, tf, size);
checksumToFunction[tf.hash] = &(functions[startAddr]);

View File

@ -27,7 +27,7 @@ public:
Symbol* AddFunction(u32 startAddr) override;
void AddKnownSymbol(u32 startAddr, u32 size, const std::string& name,
int type = Symbol::SYMBOL_FUNCTION);
Symbol::Type type = Symbol::Type::Function);
Symbol* GetSymbolFromAddr(u32 addr) override;

View File

@ -485,7 +485,7 @@ void CCodeWindow::OnSymbolListChange(wxCommandEvent& event)
Symbol* pSymbol = static_cast<Symbol*>(symbols->GetClientData(index));
if (pSymbol != nullptr)
{
if (pSymbol->type == Symbol::SYMBOL_DATA)
if (pSymbol->type == Symbol::Type::Data)
{
if (m_MemoryWindow) // && m_MemoryWindow->IsVisible())
m_MemoryWindow->JumpToAddress(pSymbol->address);

View File

@ -224,7 +224,7 @@ void DSPDebuggerLLE::OnSymbolListChange(wxCommandEvent& event)
Symbol* pSymbol = static_cast<Symbol*>(m_SymbolList->GetClientData(index));
if (pSymbol != nullptr)
{
if (pSymbol->type == Symbol::SYMBOL_FUNCTION)
if (pSymbol->type == Symbol::Type::Function)
{
JumpToAddress(pSymbol->address);
}