summaryrefslogtreecommitdiff
path: root/binaryviewtype.cpp
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2019-06-13 03:55:00 -0400
committerBrian Potchik <brian@vector35.com>2019-06-13 03:55:00 -0400
commit977a0caa78e9a8ddb958baf535df881bbaaf05b4 (patch)
treee2d34525ef120ef9868d5e136b8423527c0c5bbd /binaryviewtype.cpp
parent2dab57d29589fcc9e3896102ba222c7d1d4671cb (diff)
Initial rebase on file load support.
Diffstat (limited to 'binaryviewtype.cpp')
-rw-r--r--binaryviewtype.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp
index b0addabe..815b508e 100644
--- a/binaryviewtype.cpp
+++ b/binaryviewtype.cpp
@@ -43,6 +43,14 @@ bool BinaryViewType::IsValidCallback(void* ctxt, BNBinaryView* data)
}
+char* BinaryViewType::GetSettingsCallback(void* ctxt, BNBinaryView* data)
+{
+ BinaryViewType* type = (BinaryViewType*)ctxt;
+ Ref<BinaryView> view = new BinaryView(BNNewViewReference(data));
+ return BNAllocString(type->GetLoadSettingsForData(view).c_str());
+}
+
+
BinaryViewType::BinaryViewType(BNBinaryViewType* type)
{
m_object = type;
@@ -62,6 +70,7 @@ void BinaryViewType::Register(BinaryViewType* type)
callbacks.context = type;
callbacks.create = CreateCallback;
callbacks.isValidForData = IsValidCallback;
+ callbacks.getLoadSettingsForData = GetSettingsCallback;
type->AddRefForRegistration();
type->m_object = BNRegisterBinaryViewType(type->m_nameForRegister.c_str(),
@@ -209,3 +218,12 @@ bool CoreBinaryViewType::IsTypeValidForData(BinaryView* data)
{
return BNIsBinaryViewTypeValidForData(m_object, data->GetObject());
}
+
+
+string CoreBinaryViewType::GetLoadSettingsForData(BinaryView* data)
+{
+ char* settings = BNGetBinaryViewLoadSettingsForData(m_object, data->GetObject());
+ string result = settings;
+ BNFreeString(settings);
+ return result;
+}