/// /// JMetadata.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © Marc Rousavy @ Margelo /// #pragma once #include #include "Metadata.hpp" #include #include namespace margelo::nitro::omni { using namespace facebook; /** * The C++ JNI bridge between the C++ struct "Metadata" and the the Kotlin data class "Metadata". */ struct JMetadata final: public jni::JavaClass { public: static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/Metadata;"; public: /** * Convert this Java/Kotlin-based struct to the C++ struct Metadata by copying all values to C++. */ [[maybe_unused]] [[nodiscard]] Metadata toCpp() const { static const auto clazz = javaClassStatic(); static const auto fieldTitle = clazz->getField("title"); jni::local_ref title = this->getFieldValue(fieldTitle); static const auto fieldAlbum = clazz->getField("album"); jni::local_ref album = this->getFieldValue(fieldAlbum); static const auto fieldArtist = clazz->getField("artist"); jni::local_ref artist = this->getFieldValue(fieldArtist); static const auto fieldImageLink = clazz->getField("imageLink"); jni::local_ref imageLink = this->getFieldValue(fieldImageLink); static const auto fieldHasPrev = clazz->getField("hasPrev"); jni::local_ref hasPrev = this->getFieldValue(fieldHasPrev); static const auto fieldHasNext = clazz->getField("hasNext"); jni::local_ref hasNext = this->getFieldValue(fieldHasNext); return Metadata( title->toStdString(), album != nullptr ? std::make_optional(album->toStdString()) : std::nullopt, artist != nullptr ? std::make_optional(artist->toStdString()) : std::nullopt, imageLink != nullptr ? std::make_optional(imageLink->toStdString()) : std::nullopt, hasPrev != nullptr ? std::make_optional(static_cast(hasPrev->value())) : std::nullopt, hasNext != nullptr ? std::make_optional(static_cast(hasNext->value())) : std::nullopt ); } public: /** * Create a Java/Kotlin-based struct by copying all values from the given C++ struct to Java. */ [[maybe_unused]] static jni::local_ref fromCpp(const Metadata& value) { using JSignature = JMetadata(jni::alias_ref, jni::alias_ref, jni::alias_ref, jni::alias_ref, jni::alias_ref, jni::alias_ref); static const auto clazz = javaClassStatic(); static const auto create = clazz->getStaticMethod("fromCpp"); return create( clazz, jni::make_jstring(value.title), value.album.has_value() ? jni::make_jstring(value.album.value()) : nullptr, value.artist.has_value() ? jni::make_jstring(value.artist.value()) : nullptr, value.imageLink.has_value() ? jni::make_jstring(value.imageLink.value()) : nullptr, value.hasPrev.has_value() ? jni::JBoolean::valueOf(value.hasPrev.value()) : nullptr, value.hasNext.has_value() ? jni::JBoolean::valueOf(value.hasNext.value()) : nullptr ); } }; } // namespace margelo::nitro::omni