SignatureDB: MEGA FormatHandler added

This commit is contained in:
Sepalani committed 2017-04-29 19:50:21 +01:00
1 parent 82afda94f4
commit 5f81226d8d
8 files changed
+41 -27

No files matched your search

@@ -119,6 +119,11 @@ bool Compare(u32 address, u32 size, const MEGASignature& sig)
MEGASignatureDB::MEGASignatureDB() = default;
MEGASignatureDB::~MEGASignatureDB() = default;
void MEGASignatureDB::Clear()
{
m_signatures.clear();
}
bool MEGASignatureDB::Load(const std::string& file_path)
{
std::ifstream ifs;
@@ -145,6 +150,12 @@ bool MEGASignatureDB::Load(const std::string& file_path)
return true;
}
bool MEGASignatureDB::Save(const std::string& file_path) const
{
ERROR_LOG(OSHLE, "MEGA database save unsupported yet.");
return false;
}
void MEGASignatureDB::Apply(PPCSymbolDB* symbol_db) const
{
for (auto& it : symbol_db->AccessSymbols())
@@ -164,6 +175,17 @@ void MEGASignatureDB::Apply(PPCSymbolDB* symbol_db) const
symbol_db->Index();
}
void MEGASignatureDB::Populate(const PPCSymbolDB* func_db, const std::string& filter)
{
ERROR_LOG(OSHLE, "MEGA database can't be populated yet.");
}
bool MEGASignatureDB::Add(u32 startAddr, u32 size, const std::string& name)
{
ERROR_LOG(OSHLE, "Can't add symbol to MEGA database yet.");
return false;
}
void MEGASignatureDB::List() const
{
for (const auto& entry : m_signatures)
@@ -8,6 +8,7 @@
#include <vector>
#include "Common/CommonTypes.h"
#include "Core/PowerPC/SignatureDB/SignatureDB.h"
class PPCSymbolDB;
@@ -35,16 +36,22 @@ struct MEGASignature
// - Hexstring representation with "." acting as a wildcard
// - Name, represented as follow: ":0000 function_name"
// - References located in the hexstring at offset: "^offset reference_name"
class MEGASignatureDB
class MEGASignatureDB : public SignatureDBFormatHandler
{
public:
MEGASignatureDB();
~MEGASignatureDB();
void Clear();
bool Load(const std::string& file_path);
void Apply(PPCSymbolDB* symbol_db) const;
bool Save(const std::string& file_path) const;
void List() const;
void Apply(PPCSymbolDB* symbol_db) const;
void Populate(const PPCSymbolDB* func_db, const std::string& filter = "");
bool Add(u32 startAddr, u32 size, const std::string& name);
private:
std::vector<MEGASignature> m_signatures;
};
@@ -16,6 +16,7 @@
// Format Handlers
#include "Core/PowerPC/SignatureDB/CSVSignatureDB.h"
#include "Core/PowerPC/SignatureDB/DSYSignatureDB.h"
#include "Core/PowerPC/SignatureDB/MEGASignatureDB.h"
SignatureDB::SignatureDB(SignatureDB::HandlerType handler)
: m_handler(std::move(CreateFormatHandler(handler)))
@@ -30,6 +31,8 @@ SignatureDB::HandlerType SignatureDB::GetHandlerType(const std::string& file_pat
{
if (StringEndsWith(file_path, ".csv"))
return SignatureDB::HandlerType::CSV;
if (StringEndsWith(file_path, ".mega"))
return SignatureDB::HandlerType::MEGA;
return SignatureDB::HandlerType::DSY;
}
@@ -43,6 +46,8 @@ SignatureDB::CreateFormatHandler(SignatureDB::HandlerType handler) const
return std::make_unique<DSYSignatureDB>();
case SignatureDB::HandlerType::CSV:
return std::make_unique<CSVSignatureDB>();
case SignatureDB::HandlerType::MEGA:
return std::make_unique<MEGASignatureDB>();
}
}
@@ -21,7 +21,8 @@ public:
enum class HandlerType
{
DSY,
CSV
CSV,
MEGA
};
explicit SignatureDB(HandlerType handler);
explicit SignatureDB(const std::string& file_path);