diff options
| author | 0cyn <kat@vector35.com> | 2026-04-21 09:36:57 -0400 |
|---|---|---|
| committer | 0cyn <kat@vector35.com> | 2026-04-22 09:15:37 -0400 |
| commit | 37f159a0ef0d517f88d78c8450d120b8aa6d9ccb (patch) | |
| tree | b928013e6289653662911c29d93d4745031d9e8d /pluginmanager.cpp | |
| parent | 8ed744a615909ac4bec2bc6dd92cf5cb0485cf07 (diff) | |
Expose all version-specific info for extensions in API
Diffstat (limited to 'pluginmanager.cpp')
| -rw-r--r-- | pluginmanager.cpp | 33 |
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; |
