/// /// JBaseSource.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 "BaseSource.hpp" #include "JMetadata.hpp" #include "JMixAudioMode.hpp" #include "JSubtitle.hpp" #include "JVideoSrc.hpp" #include "Metadata.hpp" #include "MixAudioMode.hpp" #include "Subtitle.hpp" #include "VideoSrc.hpp" #include #include #include #include namespace margelo::nitro::omni { using namespace facebook; /** * The C++ JNI bridge between the C++ struct "BaseSource" and the the Kotlin data class "BaseSource". */ struct JBaseSource final: public jni::JavaClass { public: static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/BaseSource;"; public: /** * Convert this Java/Kotlin-based struct to the C++ struct BaseSource by copying all values to C++. */ [[maybe_unused]] [[nodiscard]] BaseSource toCpp() const { static const auto clazz = javaClassStatic(); static const auto fieldSrc = clazz->getField>("src"); jni::local_ref> src = this->getFieldValue(fieldSrc); static const auto fieldStartTime = clazz->getField("startTime"); jni::local_ref startTime = this->getFieldValue(fieldStartTime); static const auto fieldSubtitles = clazz->getField>("subtitles"); jni::local_ref> subtitles = this->getFieldValue(fieldSubtitles); static const auto fieldMetadata = clazz->getField("metadata"); jni::local_ref metadata = this->getFieldValue(fieldMetadata); static const auto fieldMixAudio = clazz->getField("mixAudio"); jni::local_ref mixAudio = this->getFieldValue(fieldMixAudio); return BaseSource( [&]() { size_t __size = src->size(); std::vector __vector; __vector.reserve(__size); for (size_t __i = 0; __i < __size; __i++) { auto __element = src->getElement(__i); __vector.push_back(__element->toCpp()); } return __vector; }(), startTime != nullptr ? std::make_optional(startTime->value()) : std::nullopt, [&]() { size_t __size = subtitles->size(); std::vector __vector; __vector.reserve(__size); for (size_t __i = 0; __i < __size; __i++) { auto __element = subtitles->getElement(__i); __vector.push_back(__element->toCpp()); } return __vector; }(), metadata != nullptr ? std::make_optional(metadata->toCpp()) : std::nullopt, mixAudio != nullptr ? std::make_optional(mixAudio->toCpp()) : 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 BaseSource& value) { using JSignature = JBaseSource(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, [&]() { size_t __size = value.src.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = value.src[__i]; auto __elementJni = JVideoSrc::fromCpp(__element); __array->setElement(__i, *__elementJni); } return __array; }(), value.startTime.has_value() ? jni::JDouble::valueOf(value.startTime.value()) : nullptr, [&]() { size_t __size = value.subtitles.size(); jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = value.subtitles[__i]; auto __elementJni = JSubtitle::fromCpp(__element); __array->setElement(__i, *__elementJni); } return __array; }(), value.metadata.has_value() ? JMetadata::fromCpp(value.metadata.value()) : nullptr, value.mixAudio.has_value() ? JMixAudioMode::fromCpp(value.mixAudio.value()) : nullptr ); } }; } // namespace margelo::nitro::omni