From 977a0caa78e9a8ddb958baf535df881bbaaf05b4 Mon Sep 17 00:00:00 2001 From: Brian Potchik Date: Thu, 13 Jun 2019 03:55:00 -0400 Subject: Initial rebase on file load support. --- binaryviewtype.cpp | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) (limited to 'binaryviewtype.cpp') 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 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; +} -- cgit v1.3.1