summaryrefslogtreecommitdiff
path: root/binaryviewtype.cpp
diff options
context:
space:
mode:
authorRusty Wagner <rusty@vector35.com>2015-02-16 21:37:24 -0500
committerRusty Wagner <rusty@vector35.com>2015-02-16 21:37:24 -0500
commit993d98ede9231759d8718cb33779fd1571d0475c (patch)
tree185bd4b353157cf56c53b803aff7cef76aaa12ad /binaryviewtype.cpp
parentb22b98c156c76e35e20724a8d1b86883790fbd8e (diff)
Add architecture plugin type, x86 plugin, and get ready for threads
Diffstat (limited to 'binaryviewtype.cpp')
-rw-r--r--binaryviewtype.cpp30
1 files changed, 27 insertions, 3 deletions
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<BinaryView> view = new CoreBinaryView(BNNewViewReference(data));
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(data));
Ref<BinaryView> 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<BinaryView> view = new CoreBinaryView(BNNewViewReference(data));
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(data));
return type->IsTypeValidForData(view);
}
@@ -74,6 +74,30 @@ vector<Ref<BinaryViewType>> BinaryViewType::GetViewTypesForData(BinaryView* data
}
+void BinaryViewType::RegisterArchitecture(const string& name, uint32_t id, Architecture* arch)
+{
+ Ref<BinaryViewType> 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<Architecture> 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);
}