summaryrefslogtreecommitdiff
path: root/binaryviewtype.cpp
diff options
context:
space:
mode:
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;
+}