summaryrefslogtreecommitdiff
path: root/binaryviewtype.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'binaryviewtype.cpp')
-rw-r--r--binaryviewtype.cpp43
1 files changed, 40 insertions, 3 deletions
diff --git a/binaryviewtype.cpp b/binaryviewtype.cpp
index b1f9ebe9..8ab09aae 100644
--- a/binaryviewtype.cpp
+++ b/binaryviewtype.cpp
@@ -243,7 +243,7 @@ string BinaryViewType::GetLongName()
bool BinaryViewType::IsDeprecated()
{
- return BNIsBinaryViewTypeDeprecated(m_object);
+ return false;
}
@@ -283,10 +283,41 @@ BNPlatform* BinaryViewType::PlatformRecognizerCallback(void* ctxt, BNBinaryView*
}
+Ref<BinaryView> BinaryViewType::Parse(BinaryView* data)
+{
+ Ref<BinaryView> viewRef;
+
+ // Create ephemeral BinaryView to generate information for preview
+ if (data && (GetName() != data->GetTypeName()))
+ {
+ viewRef = Create(data);
+ if (!viewRef || !viewRef->Init())
+ LogError("View type '%s' could not be created", GetName().c_str());
+ }
+
+ return viewRef;
+}
+
+
+Ref<Settings> BinaryViewType::GetLoadSettingsForData(BinaryView* data)
+{
+ return GetDefaultLoadSettingsForData(data);
+}
+
+
+Ref<Settings> BinaryViewType::GetDefaultLoadSettingsForData(BinaryView* data)
+{
+ BNSettings* settings = BNGetBinaryViewDefaultLoadSettingsForData(m_object, data->GetObject());
+ if (!settings)
+ return nullptr;
+ return new Settings(settings);
+}
+
+
CoreBinaryViewType::CoreBinaryViewType(BNBinaryViewType* type) : BinaryViewType(type) {}
-BinaryView* CoreBinaryViewType::Create(BinaryView* data)
+Ref<BinaryView> CoreBinaryViewType::Create(BinaryView* data)
{
BNBinaryView* view = BNCreateBinaryViewOfType(m_object, data->GetObject());
if (!view)
@@ -295,7 +326,7 @@ BinaryView* CoreBinaryViewType::Create(BinaryView* data)
}
-BinaryView* CoreBinaryViewType::Parse(BinaryView* data)
+Ref<BinaryView> CoreBinaryViewType::Parse(BinaryView* data)
{
BNBinaryView* view = BNParseBinaryViewOfType(m_object, data->GetObject());
if (!view)
@@ -310,6 +341,12 @@ bool CoreBinaryViewType::IsTypeValidForData(BinaryView* data)
}
+bool CoreBinaryViewType::IsDeprecated()
+{
+ return BNIsBinaryViewTypeDeprecated(m_object);
+}
+
+
Ref<Settings> CoreBinaryViewType::GetLoadSettingsForData(BinaryView* data)
{
BNSettings* settings = BNGetBinaryViewLoadSettingsForData(m_object, data->GetObject());