summaryrefslogtreecommitdiff
path: root/pluginmanager.cpp
diff options
context:
space:
mode:
author0cyn <kat@vector35.com>2026-04-21 09:36:57 -0400
committer0cyn <kat@vector35.com>2026-04-22 09:15:37 -0400
commit37f159a0ef0d517f88d78c8450d120b8aa6d9ccb (patch)
treeb928013e6289653662911c29d93d4745031d9e8d /pluginmanager.cpp
parent8ed744a615909ac4bec2bc6dd92cf5cb0485cf07 (diff)
Expose all version-specific info for extensions in API
Diffstat (limited to 'pluginmanager.cpp')
-rw-r--r--pluginmanager.cpp33
1 files changed, 25 insertions, 8 deletions
diff --git a/pluginmanager.cpp b/pluginmanager.cpp
index 774e43d3..9b24a464 100644
--- a/pluginmanager.cpp
+++ b/pluginmanager.cpp
@@ -70,14 +70,29 @@ string Extension::GetDescription() const
RETURN_STRING(BNPluginGetDescription(m_object));
}
-VersionInfo Extension::GetMinimumVersionInfo() const
+static VersionInfo ConvertVersionInfo(const BNVersionInfo& coreInfo)
{
- auto coreInfo = BNPluginGetMinimumVersionInfo(m_object);
VersionInfo result;
result.major = coreInfo.major;
result.minor = coreInfo.minor;
result.build = coreInfo.build;
- result.channel = coreInfo.channel;
+ result.channel = coreInfo.channel ? coreInfo.channel : "";
+ return result;
+}
+
+static ExtensionVersion::PlatformInfo ConvertVersionPlatform(const BNPluginVersionPlatform& corePlatform)
+{
+ ExtensionVersion::PlatformInfo result;
+ result.name = corePlatform.name ? corePlatform.name : "";
+ result.downloadUrl = corePlatform.downloadUrl ? corePlatform.downloadUrl : "";
+ result.untrackedDownloadUrl = corePlatform.untrackedDownloadUrl ? corePlatform.untrackedDownloadUrl : "";
+ return result;
+}
+
+VersionInfo Extension::GetMinimumVersionInfo() const
+{
+ auto coreInfo = BNPluginGetMinimumVersionInfo(m_object);
+ VersionInfo result = ConvertVersionInfo(coreInfo);
BNFreeString(coreInfo.channel);
return result;
}
@@ -85,11 +100,7 @@ VersionInfo Extension::GetMinimumVersionInfo() const
VersionInfo Extension::GetMaximumVersionInfo() const
{
auto coreInfo = BNPluginGetMaximumVersionInfo(m_object);
- VersionInfo result;
- result.major = coreInfo.major;
- result.minor = coreInfo.minor;
- result.build = coreInfo.build;
- result.channel = coreInfo.channel;
+ VersionInfo result = ConvertVersionInfo(coreInfo);
BNFreeString(coreInfo.channel);
return result;
}
@@ -146,6 +157,9 @@ std::vector<ExtensionVersion> Extension::GetVersions() const
version.longDescription = versionsPtr[i].longDescription ? versionsPtr[i].longDescription : "";
version.changelog = versionsPtr[i].changelog ? versionsPtr[i].changelog : "";
version.minimumClientVersion = versionsPtr[i].minimumClientVersion;
+ version.platforms.reserve(versionsPtr[i].platformCount);
+ for (size_t j = 0; j < versionsPtr[i].platformCount; j++)
+ version.platforms.push_back(ConvertVersionPlatform(versionsPtr[i].platforms[j]));
version.created = versionsPtr[i].created ? versionsPtr[i].created : "";
versions.push_back(version);
}
@@ -163,6 +177,9 @@ ExtensionVersion Extension::GetCurrentVersion() const
version.longDescription = currentVersion.longDescription ? currentVersion.longDescription : "";
version.changelog = currentVersion.changelog ? currentVersion.changelog : "";
version.minimumClientVersion = currentVersion.minimumClientVersion;
+ version.platforms.reserve(currentVersion.platformCount);
+ for (size_t i = 0; i < currentVersion.platformCount; i++)
+ version.platforms.push_back(ConvertVersionPlatform(currentVersion.platforms[i]));
version.created = currentVersion.created ? currentVersion.created : "";
BNPluginFreeVersion(currentVersion);
return version;