/// /// CastStatus.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © Marc Rousavy @ Margelo /// #pragma once #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif #if __has_include() #include #else #error NitroModules cannot be found! Are you sure you installed NitroModules properly? #endif namespace margelo::nitro::omni { /** * An enum which can be represented as a JavaScript union (CastStatus). */ enum class CastStatus { CONNECTING SWIFT_NAME(connecting) = 0, CONNECTED SWIFT_NAME(connected) = 1, AVAILABLE SWIFT_NAME(available) = 2, UNAVAILABLE SWIFT_NAME(unavailable) = 3, UNSUPPORTED SWIFT_NAME(unsupported) = 4, } CLOSED_ENUM; } // namespace margelo::nitro::omni namespace margelo::nitro { // C++ CastStatus <> JS CastStatus (union) template <> struct JSIConverter final { static inline margelo::nitro::omni::CastStatus fromJSI(jsi::Runtime& runtime, const jsi::Value& arg) { std::string unionValue = JSIConverter::fromJSI(runtime, arg); switch (hashString(unionValue.c_str(), unionValue.size())) { case hashString("connecting"): return margelo::nitro::omni::CastStatus::CONNECTING; case hashString("connected"): return margelo::nitro::omni::CastStatus::CONNECTED; case hashString("available"): return margelo::nitro::omni::CastStatus::AVAILABLE; case hashString("unavailable"): return margelo::nitro::omni::CastStatus::UNAVAILABLE; case hashString("unsupported"): return margelo::nitro::omni::CastStatus::UNSUPPORTED; default: [[unlikely]] throw std::invalid_argument("Cannot convert \"" + unionValue + "\" to enum CastStatus - invalid value!"); } } static inline jsi::Value toJSI(jsi::Runtime& runtime, margelo::nitro::omni::CastStatus arg) { switch (arg) { case margelo::nitro::omni::CastStatus::CONNECTING: return JSIConverter::toJSI(runtime, "connecting"); case margelo::nitro::omni::CastStatus::CONNECTED: return JSIConverter::toJSI(runtime, "connected"); case margelo::nitro::omni::CastStatus::AVAILABLE: return JSIConverter::toJSI(runtime, "available"); case margelo::nitro::omni::CastStatus::UNAVAILABLE: return JSIConverter::toJSI(runtime, "unavailable"); case margelo::nitro::omni::CastStatus::UNSUPPORTED: return JSIConverter::toJSI(runtime, "unsupported"); default: [[unlikely]] throw std::invalid_argument("Cannot convert CastStatus to JS - invalid value: " + std::to_string(static_cast(arg)) + "!"); } } static inline bool canConvert(jsi::Runtime& runtime, const jsi::Value& value) { if (!value.isString()) { return false; } std::string unionValue = JSIConverter::fromJSI(runtime, value); switch (hashString(unionValue.c_str(), unionValue.size())) { case hashString("connecting"): case hashString("connected"): case hashString("available"): case hashString("unavailable"): case hashString("unsupported"): return true; default: return false; } } }; } // namespace margelo::nitro