#include "cru/platform/Exception.h" #include "cru/base/Exception.h" #include #include #include namespace cru::platform { PlatformNotMatchException::PlatformNotMatchException( std::string resource_platform, std::string target_platform, std::optional additional_message) : PlatformException(std::format( "Resource platform '{}' does not match target platform '{}'.", resource_platform_, target_platform_)), resource_platform_(std::move(resource_platform)), target_platform_(std::move(target_platform)) { AppendMessage(additional_message); } PlatformNotMatchException::PlatformNotMatchException( StringView resource_platform, StringView target_platform, std::optional additional_message) : PlatformNotMatchException( resource_platform.ToUtf8(), target_platform.ToUtf8(), additional_message.has_value() ? std::make_optional(additional_message->ToUtf8()) : std::nullopt) {} PlatformNotMatchException::~PlatformNotMatchException() {} PlatformUnsupportedException::PlatformUnsupportedException( std::string platform, std::string operation, std::optional additional_message) : PlatformException( std::format("Operation '{}' is not supported on platform '{}'.", operation, platform)), platform_(std::move(platform)), operation_(std::move(operation)) { AppendMessage(additional_message); } PlatformUnsupportedException::PlatformUnsupportedException( StringView platform, StringView operation, std::optional additional_message) : PlatformUnsupportedException( platform.ToUtf8(), operation.ToUtf8(), additional_message.has_value() ? std::make_optional(additional_message->ToUtf8()) : std::nullopt) {} PlatformUnsupportedException::~PlatformUnsupportedException() {} String PlatformUnsupportedException::GetPlatform() const { return String::FromUtf8(platform_); } String PlatformUnsupportedException::GetOperation() const { return String::FromUtf8(operation_); } } // namespace cru::platform