From 993d98ede9231759d8718cb33779fd1571d0475c Mon Sep 17 00:00:00 2001 From: Rusty Wagner Date: Mon, 16 Feb 2015 21:37:24 -0500 Subject: Add architecture plugin type, x86 plugin, and get ready for threads --- binaryviewtype.cpp | 30 +++++++++++++++++++++++++++--- 1 file changed, 27 insertions(+), 3 deletions(-) (limited to 'binaryviewtype.cpp') diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp index 8089f506..5d74de2b 100644 --- a/binaryviewtype.cpp +++ b/binaryviewtype.cpp @@ -7,7 +7,7 @@ using namespace std; BNBinaryView* BinaryViewType::CreateCallback(void* ctxt, BNBinaryView* data) { BinaryViewType* type = (BinaryViewType*)ctxt; - Ref view = new CoreBinaryView(BNNewViewReference(data)); + Ref view = new BinaryView(BNNewViewReference(data)); Ref result = type->Create(view); return BNNewViewReference(result->GetViewObject()); } @@ -16,7 +16,7 @@ BNBinaryView* BinaryViewType::CreateCallback(void* ctxt, BNBinaryView* data) bool BinaryViewType::IsValidCallback(void* ctxt, BNBinaryView* data) { BinaryViewType* type = (BinaryViewType*)ctxt; - Ref view = new CoreBinaryView(BNNewViewReference(data)); + Ref view = new BinaryView(BNNewViewReference(data)); return type->IsTypeValidForData(view); } @@ -74,6 +74,30 @@ vector> BinaryViewType::GetViewTypesForData(BinaryView* data } +void BinaryViewType::RegisterArchitecture(const string& name, uint32_t id, Architecture* arch) +{ + Ref type = BinaryViewType::GetByName(name); + if (!type) + return; + type->RegisterArchitecture(id, arch); +} + + +void BinaryViewType::RegisterArchitecture(uint32_t id, Architecture* arch) +{ + BNRegisterArchitectureForViewType(m_type, id, arch->GetArchitectureObject()); +} + + +Ref BinaryViewType::GetArchitecture(uint32_t id) +{ + BNArchitecture* arch = BNGetArchitectureForViewType(m_type, id); + if (!arch) + return nullptr; + return new CoreArchitecture(arch); +} + + string BinaryViewType::GetName() { char* contents = BNGetBinaryViewTypeName(m_type); @@ -102,7 +126,7 @@ BinaryView* CoreBinaryViewType::Create(BinaryView* data) BNBinaryView* view = BNCreateBinaryViewOfType(m_type, data->GetViewObject()); if (!view) return nullptr; - return new CoreBinaryView(view); + return new BinaryView(view); } -- cgit v1.3.1