diff options
Diffstat (limited to 'binaryviewtype.cpp')
| -rw-r--r-- | binaryviewtype.cpp | 18 |
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; +} |
