summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBrian Potchik <brian@vector35.com>2018-11-21 18:43:14 -0500
committerBrian Potchik <brian@vector35.com>2018-11-21 18:43:14 -0500
commit5b9c47a16f30c36e5ba992c72b50984d2be2c4fc (patch)
tree36f1d1ff63720bf0edf8c52bae2572055b487af1
parent419a05cf5227029a5fe69799a7f7466a6b60d849 (diff)
Add ability to serialize/deserialize settings from BinaryViews.
-rw-r--r--binaryninjaapi.h2
-rw-r--r--binaryninjacore.h2
-rw-r--r--settings.cpp15
3 files changed, 19 insertions, 0 deletions
diff --git a/binaryninjaapi.h b/binaryninjaapi.h
index f907db01..80fbfe75 100644
--- a/binaryninjaapi.h
+++ b/binaryninjaapi.h
@@ -4253,6 +4253,8 @@ namespace BinaryNinja
bool UpdateProperty(const std::string& id, const std::string& property, const std::vector<std::string>& value);
std::string GetSchema();
+ bool DeserializeSettings(const std::string& contents, Ref<BinaryView> view = nullptr, BNSettingsScope scope = SettingsAutoScope);
+ std::string SerializeSettings(Ref<BinaryView> view = nullptr, BNSettingsScope scope = SettingsAutoScope);
bool Reset(const std::string& id, Ref<BinaryView> view = nullptr, BNSettingsScope scope = SettingsAutoScope);
bool ResetAll(Ref<BinaryView> view = nullptr, BNSettingsScope scope = SettingsAutoScope);
diff --git a/binaryninjacore.h b/binaryninjacore.h
index 14e8fb4f..beb7e9b3 100644
--- a/binaryninjacore.h
+++ b/binaryninjacore.h
@@ -3689,6 +3689,8 @@ extern "C"
BINARYNINJACOREAPI bool BNSettingsUpdateStringListProperty(const char* registry, const char* id, const char* property, const char** value, size_t size);
BINARYNINJACOREAPI char* BNSettingsGetSchema(const char* registry);
+ BINARYNINJACOREAPI bool BNDeserializeSettings(const char* registry, const char* contents, BNBinaryView* view, BNSettingsScope scope);
+ BINARYNINJACOREAPI char* BNSerializeSettings(const char* registry, BNBinaryView* view, BNSettingsScope scope);
BINARYNINJACOREAPI bool BNSettingsReset(const char* registry, const char* id, BNBinaryView* view, BNSettingsScope scope);
BINARYNINJACOREAPI bool BNSettingsResetAll(const char* registry, BNBinaryView* view, BNSettingsScope scope);
diff --git a/settings.cpp b/settings.cpp
index 62425f5b..df95a56c 100644
--- a/settings.cpp
+++ b/settings.cpp
@@ -90,6 +90,21 @@ string Settings::GetSchema()
}
+bool Settings::DeserializeSettings(const string& contents, Ref<BinaryView> view, BNSettingsScope scope)
+{
+ return BNDeserializeSettings(m_registry.c_str(), contents.c_str(), view ? view->GetObject() : nullptr, scope);
+}
+
+
+string Settings::SerializeSettings(Ref<BinaryView> view, BNSettingsScope scope)
+{
+ char* settingsStr = BNSerializeSettings(m_registry.c_str(), view ? view->GetObject() : nullptr, scope);
+ string settings(settingsStr);
+ BNFreeString(settingsStr);
+ return settings;
+}
+
+
bool Settings::Reset(const string& id, Ref<BinaryView> view, BNSettingsScope scope)
{
return BNSettingsReset(m_registry.c_str(), id.c_str(), view ? view->GetObject() : nullptr, scope);