diff --git a/android/src/main/java/com/rive/RivePackage.kt b/android/src/main/java/com/rive/RivePackage.kt index 2a55b64b..260b63de 100644 --- a/android/src/main/java/com/rive/RivePackage.kt +++ b/android/src/main/java/com/rive/RivePackage.kt @@ -6,6 +6,7 @@ import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.module.model.ReactModuleInfoProvider import com.facebook.react.uimanager.ViewManager import com.margelo.nitro.rive.riveOnLoad +import com.margelo.nitro.rive.views.HybridRiveViewManager class RivePackage : BaseReactPackage() { override fun createViewManagers(reactContext: ReactApplicationContext): List> { @@ -16,7 +17,7 @@ class RivePackage : BaseReactPackage() { } val viewManagers: MutableList> = ArrayList() - viewManagers.add(RiveViewManager()) + viewManagers.add(HybridRiveViewManager()) return viewManagers } diff --git a/android/src/main/java/com/rive/RiveReactNativeView.kt b/android/src/main/java/com/rive/RiveReactNativeView.kt index 6bd9d89a..1c548859 100644 --- a/android/src/main/java/com/rive/RiveReactNativeView.kt +++ b/android/src/main/java/com/rive/RiveReactNativeView.kt @@ -77,22 +77,14 @@ class RiveReactNativeView(context: ThemedReactContext) : FrameLayout(context) { private var eventListeners: MutableList = mutableListOf() private val viewReadyDeferred = CompletableDeferred() private var _activeStateMachineName: String? = null - private var willDispose = false - init { riveAnimationView = ReactNativeRiveAnimationView(context) addView(riveAnimationView) } - fun dispose() { - willDispose = true - } - override fun onDetachedFromWindow() { - if (willDispose) { - riveAnimationView?.dispose() - removeEventListeners() - } + riveAnimationView?.dispose() + removeEventListeners() super.onDetachedFromWindow() } diff --git a/android/src/main/java/com/rive/RiveViewManager.kt b/android/src/main/java/com/rive/RiveViewManager.kt deleted file mode 100644 index 16bbef08..00000000 --- a/android/src/main/java/com/rive/RiveViewManager.kt +++ /dev/null @@ -1,11 +0,0 @@ -package com.rive - -import android.view.View -import com.margelo.nitro.rive.views.HybridRiveViewManager - -class RiveViewManager : HybridRiveViewManager() { - override fun onDropViewInstance(view: View) { - (view as? RiveReactNativeView)?.dispose() - super.onDropViewInstance(view) - } -} diff --git a/example/ios/Podfile.lock b/example/ios/Podfile.lock index a87eb944..0aa1d96f 100644 --- a/example/ios/Podfile.lock +++ b/example/ios/Podfile.lock @@ -1904,7 +1904,7 @@ PODS: - ReactCommon/turbomodule/core - RNWorklets - Yoga - - RNRive (0.2.4): + - RNRive (0.2.5): - DoubleConversion - glog - hermes-engine @@ -2330,7 +2330,7 @@ SPEC CHECKSUMS: RNCPicker: 28c076ae12a1056269ec0305fe35fac3086c477d RNGestureHandler: 6b39f4e43e4b3a0fb86de9531d090ff205a011d5 RNReanimated: 66b68ebe3baf7ec9e716bd059d700726f250d344 - RNRive: 5abb7e84bce9e6a0fe3ede1b366c442ac67dda75 + RNRive: acc0d2356fbb2f65dce95b25cc154bdd0c8ceecc RNWorklets: b1faafefb82d9f29c4018404a0fb33974b494a7b SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 Yoga: 9f110fc4b7aa538663cba3c14cbb1c335f43c13f diff --git a/example/package.json b/example/package.json index 010b55ca..39c5981b 100644 --- a/example/package.json +++ b/example/package.json @@ -21,7 +21,7 @@ "react": "19.0.0", "react-native": "0.79.2", "react-native-gesture-handler": "2.29.1", - "react-native-nitro-modules": "0.33.2", + "react-native-nitro-modules": "0.35.0", "react-native-reanimated": "4.1.5", "react-native-safe-area-context": "^5.4.0", "react-native-worklets": "0.6.1" diff --git a/expo-example/package.json b/expo-example/package.json index 53894daf..a55c8cb9 100644 --- a/expo-example/package.json +++ b/expo-example/package.json @@ -35,7 +35,7 @@ "react-dom": "19.1.0", "react-native": "0.81.5", "react-native-gesture-handler": "2.29.1", - "react-native-nitro-modules": "0.33.2", + "react-native-nitro-modules": "0.35.0", "react-native-reanimated": "4.1.5", "react-native-safe-area-context": "~5.6.0", "react-native-screens": "~4.16.0", diff --git a/ios/DataSource.swift b/ios/DataSource.swift index 9aa1b74a..20b6532b 100644 --- a/ios/DataSource.swift +++ b/ios/DataSource.swift @@ -24,7 +24,7 @@ enum DataSource { return .bundle(resource: name, extension: ext.isEmpty ? nil : ext) } - static func bytes(from buffer: ArrayBufferHolder) -> DataSource { + static func bytes(from buffer: ArrayBuffer) -> DataSource { return .bytes(data: buffer.toData(copyIfNeeded: false)) } diff --git a/ios/HybridRiveFileFactory.swift b/ios/HybridRiveFileFactory.swift index 305871a1..3b7cb736 100644 --- a/ios/HybridRiveFileFactory.swift +++ b/ios/HybridRiveFileFactory.swift @@ -145,7 +145,7 @@ final class HybridRiveFileFactory: HybridRiveFileFactorySpec, @unchecked Sendabl return try fromResource(resource: resource, loadCdn: loadCdn, referencedAssets: nil) } - func fromBytes(bytes: ArrayBufferHolder, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) + func fromBytes(bytes: ArrayBuffer, loadCdn: Bool, referencedAssets: ReferencedAssetsType?) throws -> Promise< (any HybridRiveFileSpec) > { diff --git a/ios/HybridRiveImageFactory.swift b/ios/HybridRiveImageFactory.swift index 4d2ab96c..db19042a 100644 --- a/ios/HybridRiveImageFactory.swift +++ b/ios/HybridRiveImageFactory.swift @@ -20,7 +20,7 @@ final class HybridRiveImageFactory: HybridRiveImageFactorySpec { return loadFromDataSource(.bundle(nameWithExtension: resource)) } - func loadFromBytesAsync(bytes: ArrayBufferHolder) throws -> Promise<(any HybridRiveImageSpec)> { + func loadFromBytesAsync(bytes: ArrayBuffer) throws -> Promise<(any HybridRiveImageSpec)> { return loadFromDataSource(.bytes(from: bytes)) } } diff --git a/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp b/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp index e8ef34a6..a545d3ca 100644 --- a/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp @@ -13,42 +13,36 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridBindableArtboardSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridBindableArtboardSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridBindableArtboardSpec::initHybrid), - }); + std::shared_ptr JHybridBindableArtboardSpec::JavaPart::getJHybridBindableArtboardSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridBindableArtboardSpec!"); + } + return castHybridObject; } - size_t JHybridBindableArtboardSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridBindableArtboardSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridBindableArtboardSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridBindableArtboardSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridBindableArtboardSpec::JavaPart!"); } - return false; - } - - void JHybridBindableArtboardSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridBindableArtboardSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridBindableArtboardSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridBindableArtboardSpec::CxxPart::initHybrid), + }); } // Properties std::string JHybridBindableArtboardSpec::getArtboardName() { - static const auto method = javaClassStatic()->getMethod()>("getArtboardName"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getArtboardName"); auto __result = method(_javaPart); return __result->toStdString(); } diff --git a/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp b/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp index 1f8ee44d..4364ad82 100644 --- a/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridBindableArtboardSpec: public jni::HybridClass, - public virtual HybridBindableArtboardSpec { + class JHybridBindableArtboardSpec: public virtual HybridBindableArtboardSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridBindableArtboardSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridBindableArtboardSpec(jni::alias_ref jThis) : - HybridObject(HybridBindableArtboardSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridBindableArtboardSpec;"; + std::shared_ptr getJHybridBindableArtboardSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridBindableArtboardSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridBindableArtboardSpec(const jni::local_ref& javaPart): + HybridObject(HybridBindableArtboardSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridBindableArtboardSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -58,9 +57,7 @@ namespace margelo::nitro::rive { private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp b/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp index b06f4fbf..b100f63d 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp @@ -35,37 +35,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridRiveFileFactorySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveFileFactorySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveFileFactorySpec::initHybrid), - }); + std::shared_ptr JHybridRiveFileFactorySpec::JavaPart::getJHybridRiveFileFactorySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveFileFactorySpec!"); + } + return castHybridObject; } - size_t JHybridRiveFileFactorySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveFileFactorySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveFileFactorySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveFileFactorySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveFileFactorySpec::JavaPart!"); } - return false; - } - - void JHybridRiveFileFactorySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveFileFactorySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveFileFactorySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveFileFactorySpec::CxxPart::initHybrid), + }); } // Properties @@ -73,13 +67,13 @@ namespace margelo::nitro::rive { // Methods std::shared_ptr>> JHybridRiveFileFactorySpec::fromURL(const std::string& url, bool loadCdn, const std::optional& referencedAssets) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* url */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromURL"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* url */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromURL"); auto __result = method(_javaPart, jni::make_jstring(url), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveFileSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -89,13 +83,13 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr>> JHybridRiveFileFactorySpec::fromFileURL(const std::string& fileURL, bool loadCdn, const std::optional& referencedAssets) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* fileURL */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromFileURL"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* fileURL */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromFileURL"); auto __result = method(_javaPart, jni::make_jstring(fileURL), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveFileSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -105,13 +99,13 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr>> JHybridRiveFileFactorySpec::fromResource(const std::string& resource, bool loadCdn, const std::optional& referencedAssets) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* resource */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromResource"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* resource */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromResource"); auto __result = method(_javaPart, jni::make_jstring(resource), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveFileSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -121,13 +115,13 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr>> JHybridRiveFileFactorySpec::fromBytes(const std::shared_ptr& bytes, bool loadCdn, const std::optional& referencedAssets) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* bytes */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromBytes"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* bytes */, jboolean /* loadCdn */, jni::alias_ref /* referencedAssets */)>("fromBytes"); auto __result = method(_javaPart, JArrayBuffer::wrap(bytes), loadCdn, referencedAssets.has_value() ? JReferencedAssetsType::fromCpp(referencedAssets.value()) : nullptr); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveFileSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); diff --git a/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp b/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp index 2f9e446b..8729e034 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveFileFactorySpec: public jni::HybridClass, - public virtual HybridRiveFileFactorySpec { + class JHybridRiveFileFactorySpec: public virtual HybridRiveFileFactorySpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactorySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveFileFactorySpec(jni::alias_ref jThis) : - HybridObject(HybridRiveFileFactorySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactorySpec;"; + std::shared_ptr getJHybridRiveFileFactorySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactorySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveFileFactorySpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveFileFactorySpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveFileFactorySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +60,7 @@ namespace margelo::nitro::rive { std::shared_ptr>> fromBytes(const std::shared_ptr& bytes, bool loadCdn, const std::optional& referencedAssets) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp index 0c0b133b..8bbed4b7 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp @@ -44,52 +44,46 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridRiveFileSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveFileSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveFileSpec::initHybrid), - }); + std::shared_ptr JHybridRiveFileSpec::JavaPart::getJHybridRiveFileSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveFileSpec!"); + } + return castHybridObject; } - size_t JHybridRiveFileSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveFileSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveFileSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveFileSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveFileSpec::JavaPart!"); } - return false; - } - - void JHybridRiveFileSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveFileSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveFileSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveFileSpec::CxxPart::initHybrid), + }); } // Properties std::optional JHybridRiveFileSpec::getViewModelCount() { - static const auto method = javaClassStatic()->getMethod()>("getViewModelCount"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getViewModelCount"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt; } double JHybridRiveFileSpec::getArtboardCount() { - static const auto method = javaClassStatic()->getMethod("getArtboardCount"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getArtboardCount"); auto __result = method(_javaPart); return __result; } std::vector JHybridRiveFileSpec::getArtboardNames() { - static const auto method = javaClassStatic()->getMethod>()>("getArtboardNames"); + static const auto method = _javaPart->javaClassStatic()->getMethod>()>("getArtboardNames"); auto __result = method(_javaPart); return [&]() { size_t __size = __result->size(); @@ -105,28 +99,28 @@ namespace margelo::nitro::rive { // Methods std::optional> JHybridRiveFileSpec::viewModelByIndex(double index) { - static const auto method = javaClassStatic()->getMethod(double /* index */)>("viewModelByIndex"); + static const auto method = _javaPart->javaClassStatic()->getMethod(double /* index */)>("viewModelByIndex"); auto __result = method(_javaPart, index); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt; } std::optional> JHybridRiveFileSpec::viewModelByName(const std::string& name) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* name */)>("viewModelByName"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("viewModelByName"); auto __result = method(_javaPart, jni::make_jstring(name)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt; } std::optional> JHybridRiveFileSpec::defaultArtboardViewModel(const std::optional& artboardBy) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* artboardBy */)>("defaultArtboardViewModel"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* artboardBy */)>("defaultArtboardViewModel"); auto __result = method(_javaPart, artboardBy.has_value() ? JArtboardBy::fromCpp(artboardBy.value()) : nullptr); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelSpec()) : std::nullopt; } void JHybridRiveFileSpec::updateReferencedAssets(const ReferencedAssetsType& referencedAssets) { - static const auto method = javaClassStatic()->getMethod /* referencedAssets */)>("updateReferencedAssets"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* referencedAssets */)>("updateReferencedAssets"); method(_javaPart, JReferencedAssetsType::fromCpp(referencedAssets)); } std::shared_ptr JHybridRiveFileSpec::getBindableArtboard(const std::string& name) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* name */)>("getBindableArtboard"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("getBindableArtboard"); auto __result = method(_javaPart, jni::make_jstring(name)); - return __result->cthis()->shared_cast(); + return __result->getJHybridBindableArtboardSpec(); } } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp index bcd57e0a..fa3e0dd1 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveFileSpec: public jni::HybridClass, - public virtual HybridRiveFileSpec { + class JHybridRiveFileSpec: public virtual HybridRiveFileSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveFileSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveFileSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileSpec;"; + std::shared_ptr getJHybridRiveFileSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveFileSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveFileSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveFileSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -64,9 +63,7 @@ namespace margelo::nitro::rive { std::shared_ptr getBindableArtboard(const std::string& name) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp b/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp index 7a24bb4b..8f38d6bb 100644 --- a/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp @@ -21,37 +21,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridRiveImageFactorySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveImageFactorySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveImageFactorySpec::initHybrid), - }); + std::shared_ptr JHybridRiveImageFactorySpec::JavaPart::getJHybridRiveImageFactorySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveImageFactorySpec!"); + } + return castHybridObject; } - size_t JHybridRiveImageFactorySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveImageFactorySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveImageFactorySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveImageFactorySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveImageFactorySpec::JavaPart!"); } - return false; - } - - void JHybridRiveImageFactorySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveImageFactorySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveImageFactorySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveImageFactorySpec::CxxPart::initHybrid), + }); } // Properties @@ -59,13 +53,13 @@ namespace margelo::nitro::rive { // Methods std::shared_ptr>> JHybridRiveImageFactorySpec::loadFromURLAsync(const std::string& url) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* url */)>("loadFromURLAsync"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* url */)>("loadFromURLAsync"); auto __result = method(_javaPart, jni::make_jstring(url)); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveImageSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -75,13 +69,13 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr>> JHybridRiveImageFactorySpec::loadFromResourceAsync(const std::string& resource) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* resource */)>("loadFromResourceAsync"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* resource */)>("loadFromResourceAsync"); auto __result = method(_javaPart, jni::make_jstring(resource)); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveImageSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -91,13 +85,13 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr>> JHybridRiveImageFactorySpec::loadFromBytesAsync(const std::shared_ptr& bytes) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* bytes */)>("loadFromBytesAsync"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* bytes */)>("loadFromBytesAsync"); auto __result = method(_javaPart, JArrayBuffer::wrap(bytes)); return [&]() { auto __promise = Promise>::create(); __result->cthis()->addOnResolvedListener([=](const jni::alias_ref& __boxedResult) { - auto __result = jni::static_ref_cast(__boxedResult); - __promise->resolve(__result->cthis()->shared_cast()); + auto __result = jni::static_ref_cast(__boxedResult); + __promise->resolve(__result->getJHybridRiveImageSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); diff --git a/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp b/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp index a98f9981..80d33403 100644 --- a/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveImageFactorySpec: public jni::HybridClass, - public virtual HybridRiveImageFactorySpec { + class JHybridRiveImageFactorySpec: public virtual HybridRiveImageFactorySpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactorySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveImageFactorySpec(jni::alias_ref jThis) : - HybridObject(HybridRiveImageFactorySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactorySpec;"; + std::shared_ptr getJHybridRiveImageFactorySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactorySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveImageFactorySpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveImageFactorySpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveImageFactorySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -60,9 +59,7 @@ namespace margelo::nitro::rive { std::shared_ptr>> loadFromBytesAsync(const std::shared_ptr& bytes) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp index fdbe77ca..34870151 100644 --- a/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp @@ -13,42 +13,36 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridRiveImageSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveImageSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveImageSpec::initHybrid), - }); + std::shared_ptr JHybridRiveImageSpec::JavaPart::getJHybridRiveImageSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveImageSpec!"); + } + return castHybridObject; } - size_t JHybridRiveImageSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveImageSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveImageSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveImageSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveImageSpec::JavaPart!"); } - return false; - } - - void JHybridRiveImageSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveImageSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveImageSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveImageSpec::CxxPart::initHybrid), + }); } // Properties double JHybridRiveImageSpec::getByteSize() { - static const auto method = javaClassStatic()->getMethod("getByteSize"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getByteSize"); auto __result = method(_javaPart); return __result; } diff --git a/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp index 10e10845..4b544088 100644 --- a/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveImageSpec: public jni::HybridClass, - public virtual HybridRiveImageSpec { + class JHybridRiveImageSpec: public virtual HybridRiveImageSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveImageSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveImageSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageSpec;"; + std::shared_ptr getJHybridRiveImageSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveImageSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveImageSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveImageSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -58,9 +57,7 @@ namespace margelo::nitro::rive { private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp index bb7d4a84..fbad8dfa 100644 --- a/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp @@ -17,54 +17,48 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridRiveRuntimeSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveRuntimeSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveRuntimeSpec::initHybrid), - }); + std::shared_ptr JHybridRiveRuntimeSpec::JavaPart::getJHybridRiveRuntimeSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveRuntimeSpec!"); + } + return castHybridObject; } - size_t JHybridRiveRuntimeSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveRuntimeSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveRuntimeSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveRuntimeSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveRuntimeSpec::JavaPart!"); } - return false; - } - - void JHybridRiveRuntimeSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveRuntimeSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveRuntimeSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveRuntimeSpec::CxxPart::initHybrid), + }); } // Properties bool JHybridRiveRuntimeSpec::getIsInitialized() { - static const auto method = javaClassStatic()->getMethod("isInitialized"); + static const auto method = _javaPart->javaClassStatic()->getMethod("isInitialized"); auto __result = method(_javaPart); return static_cast(__result); } std::optional JHybridRiveRuntimeSpec::getInitError() { - static const auto method = javaClassStatic()->getMethod()>("getInitError"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getInitError"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt; } // Methods std::shared_ptr> JHybridRiveRuntimeSpec::initialize() { - static const auto method = javaClassStatic()->getMethod()>("initialize"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("initialize"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); diff --git a/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp index 752f5472..96cec687 100644 --- a/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveRuntimeSpec: public jni::HybridClass, - public virtual HybridRiveRuntimeSpec { + class JHybridRiveRuntimeSpec: public virtual HybridRiveRuntimeSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveRuntimeSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveRuntimeSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec;"; + std::shared_ptr getJHybridRiveRuntimeSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntimeSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveRuntimeSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveRuntimeSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveRuntimeSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -59,9 +58,7 @@ namespace margelo::nitro::rive { std::shared_ptr> initialize() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveSpec.cpp index f1fcd7a4..ba365f9a 100644 --- a/nitrogen/generated/android/c++/JHybridRiveSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveSpec.cpp @@ -13,37 +13,31 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridRiveSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveSpec::initHybrid), - }); + std::shared_ptr JHybridRiveSpec::JavaPart::getJHybridRiveSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveSpec!"); + } + return castHybridObject; } - size_t JHybridRiveSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveSpec::JavaPart!"); } - return false; - } - - void JHybridRiveSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveSpec::CxxPart::initHybrid), + }); } // Properties @@ -51,7 +45,7 @@ namespace margelo::nitro::rive { // Methods double JHybridRiveSpec::multiply(double a, double b) { - static const auto method = javaClassStatic()->getMethod("multiply"); + static const auto method = _javaPart->javaClassStatic()->getMethod("multiply"); auto __result = method(_javaPart, a, b); return __result; } diff --git a/nitrogen/generated/android/c++/JHybridRiveSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveSpec.hpp index 633677a6..5637a0b8 100644 --- a/nitrogen/generated/android/c++/JHybridRiveSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveSpec: public jni::HybridClass, - public virtual HybridRiveSpec { + class JHybridRiveSpec: public virtual HybridRiveSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveSpec;"; + std::shared_ptr getJHybridRiveSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -58,9 +57,7 @@ namespace margelo::nitro::rive { double multiply(double a, double b) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp index f9c78c5b..e19696a1 100644 --- a/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp @@ -65,114 +65,108 @@ namespace margelo::nitro::rive { enum class RiveEventType; } namespace margelo::nitro::rive { - jni::local_ref JHybridRiveViewSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveViewSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveViewSpec::initHybrid), - }); + std::shared_ptr JHybridRiveViewSpec::JavaPart::getJHybridRiveViewSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridRiveViewSpec!"); + } + return castHybridObject; } - size_t JHybridRiveViewSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveViewSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveViewSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveViewSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridRiveViewSpec::JavaPart!"); } - return false; - } - - void JHybridRiveViewSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveViewSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveViewSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveViewSpec::CxxPart::initHybrid), + }); } // Properties std::optional JHybridRiveViewSpec::getArtboardName() { - static const auto method = javaClassStatic()->getMethod()>("getArtboardName"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getArtboardName"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt; } void JHybridRiveViewSpec::setArtboardName(const std::optional& artboardName) { - static const auto method = javaClassStatic()->getMethod /* artboardName */)>("setArtboardName"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* artboardName */)>("setArtboardName"); method(_javaPart, artboardName.has_value() ? jni::make_jstring(artboardName.value()) : nullptr); } std::optional JHybridRiveViewSpec::getStateMachineName() { - static const auto method = javaClassStatic()->getMethod()>("getStateMachineName"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getStateMachineName"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toStdString()) : std::nullopt; } void JHybridRiveViewSpec::setStateMachineName(const std::optional& stateMachineName) { - static const auto method = javaClassStatic()->getMethod /* stateMachineName */)>("setStateMachineName"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* stateMachineName */)>("setStateMachineName"); method(_javaPart, stateMachineName.has_value() ? jni::make_jstring(stateMachineName.value()) : nullptr); } std::optional JHybridRiveViewSpec::getAutoPlay() { - static const auto method = javaClassStatic()->getMethod()>("getAutoPlay"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getAutoPlay"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(static_cast(__result->value())) : std::nullopt; } void JHybridRiveViewSpec::setAutoPlay(std::optional autoPlay) { - static const auto method = javaClassStatic()->getMethod /* autoPlay */)>("setAutoPlay"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* autoPlay */)>("setAutoPlay"); method(_javaPart, autoPlay.has_value() ? jni::JBoolean::valueOf(autoPlay.value()) : nullptr); } std::shared_ptr JHybridRiveViewSpec::getFile() { - static const auto method = javaClassStatic()->getMethod()>("getFile"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getFile"); auto __result = method(_javaPart); - return __result->cthis()->shared_cast(); + return __result->getJHybridRiveFileSpec(); } void JHybridRiveViewSpec::setFile(const std::shared_ptr& file) { - static const auto method = javaClassStatic()->getMethod /* file */)>("setFile"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* file */)>("setFile"); method(_javaPart, std::dynamic_pointer_cast(file)->getJavaPart()); } std::optional JHybridRiveViewSpec::getAlignment() { - static const auto method = javaClassStatic()->getMethod()>("getAlignment"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getAlignment"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridRiveViewSpec::setAlignment(std::optional alignment) { - static const auto method = javaClassStatic()->getMethod /* alignment */)>("setAlignment"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* alignment */)>("setAlignment"); method(_javaPart, alignment.has_value() ? JAlignment::fromCpp(alignment.value()) : nullptr); } std::optional JHybridRiveViewSpec::getFit() { - static const auto method = javaClassStatic()->getMethod()>("getFit"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getFit"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridRiveViewSpec::setFit(std::optional fit) { - static const auto method = javaClassStatic()->getMethod /* fit */)>("setFit"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* fit */)>("setFit"); method(_javaPart, fit.has_value() ? JFit::fromCpp(fit.value()) : nullptr); } std::optional JHybridRiveViewSpec::getLayoutScaleFactor() { - static const auto method = javaClassStatic()->getMethod()>("getLayoutScaleFactor"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getLayoutScaleFactor"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->value()) : std::nullopt; } void JHybridRiveViewSpec::setLayoutScaleFactor(std::optional layoutScaleFactor) { - static const auto method = javaClassStatic()->getMethod /* layoutScaleFactor */)>("setLayoutScaleFactor"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* layoutScaleFactor */)>("setLayoutScaleFactor"); method(_javaPart, layoutScaleFactor.has_value() ? jni::JDouble::valueOf(layoutScaleFactor.value()) : nullptr); } std::optional, DataBindMode, DataBindByName>> JHybridRiveViewSpec::getDataBind() { - static const auto method = javaClassStatic()->getMethod()>("getDataBind"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getDataBind"); auto __result = method(_javaPart); return __result != nullptr ? std::make_optional(__result->toCpp()) : std::nullopt; } void JHybridRiveViewSpec::setDataBind(const std::optional, DataBindMode, DataBindByName>>& dataBind) { - static const auto method = javaClassStatic()->getMethod /* dataBind */)>("setDataBind"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* dataBind */)>("setDataBind"); method(_javaPart, dataBind.has_value() ? JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName::fromCpp(dataBind.value()) : nullptr); } std::function JHybridRiveViewSpec::getOnError() { - static const auto method = javaClassStatic()->getMethod()>("getOnError_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getOnError_cxx"); auto __result = method(_javaPart); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_RiveError_cxx::javaClassStatic())) [[likely]] { @@ -185,13 +179,13 @@ namespace margelo::nitro::rive { }(); } void JHybridRiveViewSpec::setOnError(const std::function& onError) { - static const auto method = javaClassStatic()->getMethod /* onError */)>("setOnError_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* onError */)>("setOnError_cxx"); method(_javaPart, JFunc_void_RiveError_cxx::fromCpp(onError)); } // Methods std::shared_ptr> JHybridRiveViewSpec::awaitViewReady() { - static const auto method = javaClassStatic()->getMethod()>("awaitViewReady"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("awaitViewReady"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); @@ -207,16 +201,16 @@ namespace margelo::nitro::rive { }(); } void JHybridRiveViewSpec::bindViewModelInstance(const std::shared_ptr& viewModelInstance) { - static const auto method = javaClassStatic()->getMethod /* viewModelInstance */)>("bindViewModelInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* viewModelInstance */)>("bindViewModelInstance"); method(_javaPart, std::dynamic_pointer_cast(viewModelInstance)->getJavaPart()); } std::optional> JHybridRiveViewSpec::getViewModelInstance() { - static const auto method = javaClassStatic()->getMethod()>("getViewModelInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getViewModelInstance"); auto __result = method(_javaPart); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } std::shared_ptr> JHybridRiveViewSpec::play() { - static const auto method = javaClassStatic()->getMethod()>("play"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("play"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); @@ -231,7 +225,7 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr> JHybridRiveViewSpec::pause() { - static const auto method = javaClassStatic()->getMethod()>("pause"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("pause"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); @@ -246,7 +240,7 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr> JHybridRiveViewSpec::reset() { - static const auto method = javaClassStatic()->getMethod()>("reset"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("reset"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); @@ -261,45 +255,45 @@ namespace margelo::nitro::rive { }(); } void JHybridRiveViewSpec::playIfNeeded() { - static const auto method = javaClassStatic()->getMethod("playIfNeeded"); + static const auto method = _javaPart->javaClassStatic()->getMethod("playIfNeeded"); method(_javaPart); } void JHybridRiveViewSpec::onEventListener(const std::function& onEvent) { - static const auto method = javaClassStatic()->getMethod /* onEvent */)>("onEventListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* onEvent */)>("onEventListener_cxx"); method(_javaPart, JFunc_void_UnifiedRiveEvent_cxx::fromCpp(onEvent)); } void JHybridRiveViewSpec::removeEventListeners() { - static const auto method = javaClassStatic()->getMethod("removeEventListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeEventListeners"); method(_javaPart); } void JHybridRiveViewSpec::setNumberInputValue(const std::string& name, double value, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, double /* value */, jni::alias_ref /* path */)>("setNumberInputValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, double /* value */, jni::alias_ref /* path */)>("setNumberInputValue"); method(_javaPart, jni::make_jstring(name), value, path.has_value() ? jni::make_jstring(path.value()) : nullptr); } double JHybridRiveViewSpec::getNumberInputValue(const std::string& name, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("getNumberInputValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("getNumberInputValue"); auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr); return __result; } void JHybridRiveViewSpec::setBooleanInputValue(const std::string& name, bool value, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, jboolean /* value */, jni::alias_ref /* path */)>("setBooleanInputValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, jboolean /* value */, jni::alias_ref /* path */)>("setBooleanInputValue"); method(_javaPart, jni::make_jstring(name), value, path.has_value() ? jni::make_jstring(path.value()) : nullptr); } bool JHybridRiveViewSpec::getBooleanInputValue(const std::string& name, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("getBooleanInputValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("getBooleanInputValue"); auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr); return static_cast(__result); } void JHybridRiveViewSpec::triggerInput(const std::string& name, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("triggerInput"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, jni::alias_ref /* path */)>("triggerInput"); method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr); } void JHybridRiveViewSpec::setTextRunValue(const std::string& name, const std::string& value, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod /* name */, jni::alias_ref /* value */, jni::alias_ref /* path */)>("setTextRunValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* name */, jni::alias_ref /* value */, jni::alias_ref /* path */)>("setTextRunValue"); method(_javaPart, jni::make_jstring(name), jni::make_jstring(value), path.has_value() ? jni::make_jstring(path.value()) : nullptr); } std::string JHybridRiveViewSpec::getTextRunValue(const std::string& name, const std::optional& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* name */, jni::alias_ref /* path */)>("getTextRunValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */, jni::alias_ref /* path */)>("getTextRunValue"); auto __result = method(_javaPart, jni::make_jstring(name), path.has_value() ? jni::make_jstring(path.value()) : nullptr); return __result->toStdString(); } diff --git a/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp index 6f981c2b..817d66a8 100644 --- a/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveViewSpec: public jni::HybridClass, - public virtual HybridRiveViewSpec { + class JHybridRiveViewSpec: public virtual HybridRiveViewSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveViewSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveViewSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec;"; + std::shared_ptr getJHybridRiveViewSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveViewSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridRiveViewSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveViewSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveViewSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -90,9 +89,7 @@ namespace margelo::nitro::rive { std::string getTextRunValue(const std::string& name, const std::optional& path) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp index e6d4d6dc..037dc586 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp @@ -17,37 +17,31 @@ namespace margelo::nitro::rive { class HybridBindableArtboardSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelArtboardPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelArtboardPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelArtboardPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelArtboardPropertySpec::JavaPart::getJHybridViewModelArtboardPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelArtboardPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelArtboardPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelArtboardPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelArtboardPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelArtboardPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelArtboardPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelArtboardPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelArtboardPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelArtboardPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelArtboardPropertySpec::CxxPart::initHybrid), + }); } // Properties @@ -55,7 +49,7 @@ namespace margelo::nitro::rive { // Methods void JHybridViewModelArtboardPropertySpec::set(const std::optional>& artboard) { - static const auto method = javaClassStatic()->getMethod /* artboard */)>("set"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* artboard */)>("set"); method(_javaPart, artboard.has_value() ? std::dynamic_pointer_cast(artboard.value())->getJavaPart() : nullptr); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp index 1cc26d41..7ce38ff4 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelArtboardPropertySpec: public jni::HybridClass, - public virtual HybridViewModelArtboardPropertySpec { + class JHybridViewModelArtboardPropertySpec: public virtual HybridViewModelArtboardPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelArtboardPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelArtboardPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec;"; + std::shared_ptr getJHybridViewModelArtboardPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelArtboardPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelArtboardPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelArtboardPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelArtboardPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -59,9 +59,7 @@ namespace margelo::nitro::rive { void set(const std::optional>& artboard) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp index d78723ee..83770717 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp @@ -16,53 +16,47 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelBooleanPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelBooleanPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelBooleanPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelBooleanPropertySpec::JavaPart::getJHybridViewModelBooleanPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelBooleanPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelBooleanPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelBooleanPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelBooleanPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelBooleanPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelBooleanPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelBooleanPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelBooleanPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelBooleanPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelBooleanPropertySpec::CxxPart::initHybrid), + }); } // Properties bool JHybridViewModelBooleanPropertySpec::getValue() { - static const auto method = javaClassStatic()->getMethod("getValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getValue"); auto __result = method(_javaPart); return static_cast(__result); } void JHybridViewModelBooleanPropertySpec::setValue(bool value) { - static const auto method = javaClassStatic()->getMethod("setValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("setValue"); method(_javaPart, value); } // Methods std::function JHybridViewModelBooleanPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_bool_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -75,7 +69,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelBooleanPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp index 9fc4cde1..46064e88 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelBooleanPropertySpec: public jni::HybridClass, - public virtual HybridViewModelBooleanPropertySpec { + class JHybridViewModelBooleanPropertySpec: public virtual HybridViewModelBooleanPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelBooleanPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelBooleanPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec;"; + std::shared_ptr getJHybridViewModelBooleanPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelBooleanPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelBooleanPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelBooleanPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp index a4bdcc2e..36775209 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp @@ -16,53 +16,47 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelColorPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelColorPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelColorPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelColorPropertySpec::JavaPart::getJHybridViewModelColorPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelColorPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelColorPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelColorPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelColorPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelColorPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelColorPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelColorPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelColorPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelColorPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelColorPropertySpec::CxxPart::initHybrid), + }); } // Properties double JHybridViewModelColorPropertySpec::getValue() { - static const auto method = javaClassStatic()->getMethod("getValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getValue"); auto __result = method(_javaPart); return __result; } void JHybridViewModelColorPropertySpec::setValue(double value) { - static const auto method = javaClassStatic()->getMethod("setValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("setValue"); method(_javaPart, value); } // Methods std::function JHybridViewModelColorPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_double_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -75,7 +69,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelColorPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp index e9d5812f..4c828eda 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelColorPropertySpec: public jni::HybridClass, - public virtual HybridViewModelColorPropertySpec { + class JHybridViewModelColorPropertySpec: public virtual HybridViewModelColorPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelColorPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelColorPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec;"; + std::shared_ptr getJHybridViewModelColorPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelColorPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelColorPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelColorPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp index 9defc0c5..d5ba61df 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp @@ -17,53 +17,47 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelEnumPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelEnumPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelEnumPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelEnumPropertySpec::JavaPart::getJHybridViewModelEnumPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelEnumPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelEnumPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelEnumPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelEnumPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelEnumPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelEnumPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelEnumPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelEnumPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelEnumPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelEnumPropertySpec::CxxPart::initHybrid), + }); } // Properties std::string JHybridViewModelEnumPropertySpec::getValue() { - static const auto method = javaClassStatic()->getMethod()>("getValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValue"); auto __result = method(_javaPart); return __result->toStdString(); } void JHybridViewModelEnumPropertySpec::setValue(const std::string& value) { - static const auto method = javaClassStatic()->getMethod /* value */)>("setValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* value */)>("setValue"); method(_javaPart, jni::make_jstring(value)); } // Methods std::function JHybridViewModelEnumPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -76,7 +70,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelEnumPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp index 2264f3ce..2bfb4140 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelEnumPropertySpec: public jni::HybridClass, - public virtual HybridViewModelEnumPropertySpec { + class JHybridViewModelEnumPropertySpec: public virtual HybridViewModelEnumPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelEnumPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelEnumPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec;"; + std::shared_ptr getJHybridViewModelEnumPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelEnumPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelEnumPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelEnumPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp index d40ef5a6..9ff8fa02 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp @@ -20,37 +20,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelImagePropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelImagePropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelImagePropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelImagePropertySpec::JavaPart::getJHybridViewModelImagePropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelImagePropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelImagePropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelImagePropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelImagePropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelImagePropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelImagePropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelImagePropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelImagePropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelImagePropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelImagePropertySpec::CxxPart::initHybrid), + }); } // Properties @@ -58,11 +52,11 @@ namespace margelo::nitro::rive { // Methods void JHybridViewModelImagePropertySpec::set(const std::optional>& image) { - static const auto method = javaClassStatic()->getMethod /* image */)>("set"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* image */)>("set"); method(_javaPart, image.has_value() ? std::dynamic_pointer_cast(image.value())->getJavaPart() : nullptr); } std::function JHybridViewModelImagePropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -75,7 +69,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelImagePropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp index b6be7e04..e5f8df1e 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelImagePropertySpec: public jni::HybridClass, - public virtual HybridViewModelImagePropertySpec { + class JHybridViewModelImagePropertySpec: public virtual HybridViewModelImagePropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelImagePropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelImagePropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec;"; + std::shared_ptr getJHybridViewModelImagePropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelImagePropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelImagePropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelImagePropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp index f6abcdd9..ccb8618e 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp @@ -54,99 +54,93 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelInstanceSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelInstanceSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelInstanceSpec::initHybrid), - }); + std::shared_ptr JHybridViewModelInstanceSpec::JavaPart::getJHybridViewModelInstanceSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelInstanceSpec!"); + } + return castHybridObject; } - size_t JHybridViewModelInstanceSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelInstanceSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelInstanceSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelInstanceSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelInstanceSpec::JavaPart!"); } - return false; - } - - void JHybridViewModelInstanceSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelInstanceSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelInstanceSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelInstanceSpec::CxxPart::initHybrid), + }); } // Properties std::string JHybridViewModelInstanceSpec::getInstanceName() { - static const auto method = javaClassStatic()->getMethod()>("getInstanceName"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getInstanceName"); auto __result = method(_javaPart); return __result->toStdString(); } // Methods std::optional> JHybridViewModelInstanceSpec::numberProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("numberProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("numberProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelNumberPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::stringProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("stringProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("stringProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelStringPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::booleanProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("booleanProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("booleanProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelBooleanPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::colorProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("colorProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("colorProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelColorPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::enumProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("enumProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("enumProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelEnumPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::triggerProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("triggerProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("triggerProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelTriggerPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::imageProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("imageProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("imageProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelImagePropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::listProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("listProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("listProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelListPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::artboardProperty(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("artboardProperty"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("artboardProperty"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelArtboardPropertySpec()) : std::nullopt; } std::optional> JHybridViewModelInstanceSpec::viewModel(const std::string& path) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* path */)>("viewModel"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* path */)>("viewModel"); auto __result = method(_javaPart, jni::make_jstring(path)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } void JHybridViewModelInstanceSpec::replaceViewModel(const std::string& path, const std::shared_ptr& instance) { - static const auto method = javaClassStatic()->getMethod /* path */, jni::alias_ref /* instance */)>("replaceViewModel"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* path */, jni::alias_ref /* instance */)>("replaceViewModel"); method(_javaPart, jni::make_jstring(path), std::dynamic_pointer_cast(instance)->getJavaPart()); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp index b54b1d9e..8fe85dd6 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelInstanceSpec: public jni::HybridClass, - public virtual HybridViewModelInstanceSpec { + class JHybridViewModelInstanceSpec: public virtual HybridViewModelInstanceSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelInstanceSpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelInstanceSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec;"; + std::shared_ptr getJHybridViewModelInstanceSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelInstanceSpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelInstanceSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelInstanceSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -68,9 +67,7 @@ namespace margelo::nitro::rive { void replaceViewModel(const std::string& path, const std::shared_ptr& instance) override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp index de3c1643..96dbe630 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp @@ -20,76 +20,70 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelListPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelListPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelListPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelListPropertySpec::JavaPart::getJHybridViewModelListPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelListPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelListPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelListPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelListPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelListPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelListPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelListPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelListPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelListPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelListPropertySpec::CxxPart::initHybrid), + }); } // Properties double JHybridViewModelListPropertySpec::getLength() { - static const auto method = javaClassStatic()->getMethod("getLength"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getLength"); auto __result = method(_javaPart); return __result; } // Methods std::optional> JHybridViewModelListPropertySpec::getInstanceAt(double index) { - static const auto method = javaClassStatic()->getMethod(double /* index */)>("getInstanceAt"); + static const auto method = _javaPart->javaClassStatic()->getMethod(double /* index */)>("getInstanceAt"); auto __result = method(_javaPart, index); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } void JHybridViewModelListPropertySpec::addInstance(const std::shared_ptr& instance) { - static const auto method = javaClassStatic()->getMethod /* instance */)>("addInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* instance */)>("addInstance"); method(_javaPart, std::dynamic_pointer_cast(instance)->getJavaPart()); } bool JHybridViewModelListPropertySpec::addInstanceAt(const std::shared_ptr& instance, double index) { - static const auto method = javaClassStatic()->getMethod /* instance */, double /* index */)>("addInstanceAt"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* instance */, double /* index */)>("addInstanceAt"); auto __result = method(_javaPart, std::dynamic_pointer_cast(instance)->getJavaPart(), index); return static_cast(__result); } void JHybridViewModelListPropertySpec::removeInstance(const std::shared_ptr& instance) { - static const auto method = javaClassStatic()->getMethod /* instance */)>("removeInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* instance */)>("removeInstance"); method(_javaPart, std::dynamic_pointer_cast(instance)->getJavaPart()); } void JHybridViewModelListPropertySpec::removeInstanceAt(double index) { - static const auto method = javaClassStatic()->getMethod("removeInstanceAt"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeInstanceAt"); method(_javaPart, index); } bool JHybridViewModelListPropertySpec::swap(double index1, double index2) { - static const auto method = javaClassStatic()->getMethod("swap"); + static const auto method = _javaPart->javaClassStatic()->getMethod("swap"); auto __result = method(_javaPart, index1, index2); return static_cast(__result); } std::function JHybridViewModelListPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -102,7 +96,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelListPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp index 53c40f47..14f4ba84 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelListPropertySpec: public jni::HybridClass, - public virtual HybridViewModelListPropertySpec { + class JHybridViewModelListPropertySpec: public virtual HybridViewModelListPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelListPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelListPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelListPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelListPropertySpec;"; + std::shared_ptr getJHybridViewModelListPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelListPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelListPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelListPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelListPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -66,9 +66,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp index ea71cc90..fa0b4672 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp @@ -16,53 +16,47 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelNumberPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelNumberPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelNumberPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelNumberPropertySpec::JavaPart::getJHybridViewModelNumberPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelNumberPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelNumberPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelNumberPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelNumberPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelNumberPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelNumberPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelNumberPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelNumberPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelNumberPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelNumberPropertySpec::CxxPart::initHybrid), + }); } // Properties double JHybridViewModelNumberPropertySpec::getValue() { - static const auto method = javaClassStatic()->getMethod("getValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getValue"); auto __result = method(_javaPart); return __result; } void JHybridViewModelNumberPropertySpec::setValue(double value) { - static const auto method = javaClassStatic()->getMethod("setValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod("setValue"); method(_javaPart, value); } // Methods std::function JHybridViewModelNumberPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_double_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -75,7 +69,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelNumberPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp index 5dd702bd..e0953691 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelNumberPropertySpec: public jni::HybridClass, - public virtual HybridViewModelNumberPropertySpec { + class JHybridViewModelNumberPropertySpec: public virtual HybridViewModelNumberPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelNumberPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelNumberPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelNumberPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelNumberPropertySpec;"; + std::shared_ptr getJHybridViewModelNumberPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelNumberPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelNumberPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelNumberPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelNumberPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp index 6990210c..fd873f24 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp @@ -13,37 +13,31 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelPropertySpec::JavaPart::getJHybridViewModelPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelPropertySpec::CxxPart::initHybrid), + }); } // Properties diff --git a/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp index e57f7d4a..f7d7ffd0 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelPropertySpec: public jni::HybridClass, - public virtual HybridViewModelPropertySpec { + class JHybridViewModelPropertySpec: public virtual HybridViewModelPropertySpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelPropertySpec;"; + std::shared_ptr getJHybridViewModelPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelPropertySpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -58,9 +57,7 @@ namespace margelo::nitro::rive { private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp index 9799a925..f167ad35 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp @@ -18,76 +18,70 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelSpec::initHybrid), - }); + std::shared_ptr JHybridViewModelSpec::JavaPart::getJHybridViewModelSpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelSpec!"); + } + return castHybridObject; } - size_t JHybridViewModelSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelSpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelSpec::JavaPart!"); } - return false; - } - - void JHybridViewModelSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelSpec::CxxPart::initHybrid), + }); } // Properties double JHybridViewModelSpec::getPropertyCount() { - static const auto method = javaClassStatic()->getMethod("getPropertyCount"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getPropertyCount"); auto __result = method(_javaPart); return __result; } double JHybridViewModelSpec::getInstanceCount() { - static const auto method = javaClassStatic()->getMethod("getInstanceCount"); + static const auto method = _javaPart->javaClassStatic()->getMethod("getInstanceCount"); auto __result = method(_javaPart); return __result; } std::string JHybridViewModelSpec::getModelName() { - static const auto method = javaClassStatic()->getMethod()>("getModelName"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getModelName"); auto __result = method(_javaPart); return __result->toStdString(); } // Methods std::optional> JHybridViewModelSpec::createInstanceByIndex(double index) { - static const auto method = javaClassStatic()->getMethod(double /* index */)>("createInstanceByIndex"); + static const auto method = _javaPart->javaClassStatic()->getMethod(double /* index */)>("createInstanceByIndex"); auto __result = method(_javaPart, index); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } std::optional> JHybridViewModelSpec::createInstanceByName(const std::string& name) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* name */)>("createInstanceByName"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("createInstanceByName"); auto __result = method(_javaPart, jni::make_jstring(name)); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } std::optional> JHybridViewModelSpec::createDefaultInstance() { - static const auto method = javaClassStatic()->getMethod()>("createDefaultInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("createDefaultInstance"); auto __result = method(_javaPart); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } std::optional> JHybridViewModelSpec::createInstance() { - static const auto method = javaClassStatic()->getMethod()>("createInstance"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("createInstance"); auto __result = method(_javaPart); - return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast()) : std::nullopt; + return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt; } } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp index 3e6bc329..7b0a1d4d 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelSpec: public jni::HybridClass, - public virtual HybridViewModelSpec { + class JHybridViewModelSpec: public virtual HybridViewModelSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelSpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelSpec;"; + std::shared_ptr getJHybridViewModelSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelSpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelSpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelSpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -63,9 +62,7 @@ namespace margelo::nitro::rive { std::optional> createInstance() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp index f01cb8f8..0d87f455 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp @@ -17,53 +17,47 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelStringPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelStringPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelStringPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelStringPropertySpec::JavaPart::getJHybridViewModelStringPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelStringPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelStringPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelStringPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelStringPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelStringPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelStringPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelStringPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelStringPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelStringPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelStringPropertySpec::CxxPart::initHybrid), + }); } // Properties std::string JHybridViewModelStringPropertySpec::getValue() { - static const auto method = javaClassStatic()->getMethod()>("getValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getValue"); auto __result = method(_javaPart); return __result->toStdString(); } void JHybridViewModelStringPropertySpec::setValue(const std::string& value) { - static const auto method = javaClassStatic()->getMethod /* value */)>("setValue"); + static const auto method = _javaPart->javaClassStatic()->getMethod /* value */)>("setValue"); method(_javaPart, jni::make_jstring(value)); } // Methods std::function JHybridViewModelStringPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -76,7 +70,7 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelStringPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp index e24f5ee5..158d8344 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelStringPropertySpec: public jni::HybridClass, - public virtual HybridViewModelStringPropertySpec { + class JHybridViewModelStringPropertySpec: public virtual HybridViewModelStringPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelStringPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelStringPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelStringPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelStringPropertySpec;"; + std::shared_ptr getJHybridViewModelStringPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelStringPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelStringPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelStringPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelStringPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp b/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp index 5dae4ed9..dccdb7b6 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +++ b/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp @@ -15,37 +15,31 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridViewModelTriggerPropertySpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridViewModelTriggerPropertySpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridViewModelTriggerPropertySpec::initHybrid), - }); + std::shared_ptr JHybridViewModelTriggerPropertySpec::JavaPart::getJHybridViewModelTriggerPropertySpec() { + auto hybridObject = JHybridObject::JavaPart::getJHybridObject(); + auto castHybridObject = std::dynamic_pointer_cast(hybridObject); + if (castHybridObject == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelTriggerPropertySpec!"); + } + return castHybridObject; } - size_t JHybridViewModelTriggerPropertySpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridViewModelTriggerPropertySpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridViewModelTriggerPropertySpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridViewModelTriggerPropertySpec::CxxPart::createHybridObject(const jni::local_ref& javaPart) { + auto castJavaPart = jni::dynamic_ref_cast(javaPart); + if (castJavaPart == nullptr) [[unlikely]] { + throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelTriggerPropertySpec::JavaPart!"); } - return false; - } - - void JHybridViewModelTriggerPropertySpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridViewModelTriggerPropertySpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridViewModelTriggerPropertySpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridViewModelTriggerPropertySpec::CxxPart::initHybrid), + }); } // Properties @@ -53,7 +47,7 @@ namespace margelo::nitro::rive { // Methods std::function JHybridViewModelTriggerPropertySpec::addListener(const std::function& onChanged) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* onChanged */)>("addListener_cxx"); auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged)); return [&]() -> std::function { if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] { @@ -66,11 +60,11 @@ namespace margelo::nitro::rive { }(); } void JHybridViewModelTriggerPropertySpec::trigger() { - static const auto method = javaClassStatic()->getMethod("trigger"); + static const auto method = _javaPart->javaClassStatic()->getMethod("trigger"); method(_javaPart); } void JHybridViewModelTriggerPropertySpec::removeListeners() { - static const auto method = javaClassStatic()->getMethod("removeListeners"); + static const auto method = _javaPart->javaClassStatic()->getMethod("removeListeners"); method(_javaPart); } diff --git a/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp b/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp index 92643536..f5ca2492 100644 --- a/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +++ b/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp @@ -19,34 +19,34 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridViewModelTriggerPropertySpec: public jni::HybridClass, - public virtual HybridViewModelTriggerPropertySpec { + class JHybridViewModelTriggerPropertySpec: public virtual HybridViewModelTriggerPropertySpec, public virtual JHybridViewModelPropertySpec { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelTriggerPropertySpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridViewModelTriggerPropertySpec(jni::alias_ref jThis) : - HybridObject(HybridViewModelTriggerPropertySpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelTriggerPropertySpec;"; + std::shared_ptr getJHybridViewModelTriggerPropertySpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelTriggerPropertySpec$CxxPart;"; + static jni::local_ref initHybrid(jni::alias_ref jThis); + static void registerNatives(); + using HybridBase::HybridBase; + protected: + std::shared_ptr createHybridObject(const jni::local_ref& javaPart) override; + }; public: + explicit JHybridViewModelTriggerPropertySpec(const jni::local_ref& javaPart): + HybridObject(HybridViewModelTriggerPropertySpec::TAG), + JHybridObject(javaPart), + JHybridViewModelPropertySpec(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridViewModelTriggerPropertySpec() override { // Hermes GC can destroy JS objects on a non-JNI Thread. jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); }); } public: - size_t getExternalMemorySize() noexcept override; - bool equals(const std::shared_ptr& other) override; - void dispose() noexcept override; - std::string toString() override; - - public: - inline const jni::global_ref& getJavaPart() const noexcept { + inline const jni::global_ref& getJavaPart() const noexcept { return _javaPart; } @@ -61,9 +61,7 @@ namespace margelo::nitro::rive { void removeListeners() override; private: - friend HybridBase; - using HybridBase::HybridBase; - jni::global_ref _javaPart; + jni::global_ref _javaPart; }; } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp b/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp index 3567a1c4..acf69cb8 100644 --- a/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +++ b/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp @@ -43,14 +43,14 @@ namespace margelo::nitro::rive { jni::local_ref sourceAssetId = this->getFieldValue(fieldSourceAssetId); static const auto fieldPath = clazz->getField("path"); jni::local_ref path = this->getFieldValue(fieldPath); - static const auto fieldImage = clazz->getField("image"); - jni::local_ref image = this->getFieldValue(fieldImage); + static const auto fieldImage = clazz->getField("image"); + jni::local_ref image = this->getFieldValue(fieldImage); return ResolvedReferencedAsset( sourceUrl != nullptr ? std::make_optional(sourceUrl->toStdString()) : std::nullopt, sourceAsset != nullptr ? std::make_optional(sourceAsset->toStdString()) : std::nullopt, sourceAssetId != nullptr ? std::make_optional(sourceAssetId->toStdString()) : std::nullopt, path != nullptr ? std::make_optional(path->toStdString()) : std::nullopt, - image != nullptr ? std::make_optional(image->cthis()->shared_cast()) : std::nullopt + image != nullptr ? std::make_optional(image->getJHybridRiveImageSpec()) : std::nullopt ); } @@ -60,7 +60,7 @@ namespace margelo::nitro::rive { */ [[maybe_unused]] static jni::local_ref fromCpp(const ResolvedReferencedAsset& value) { - using JSignature = JResolvedReferencedAsset(jni::alias_ref, jni::alias_ref, jni::alias_ref, jni::alias_ref, jni::alias_ref); + using JSignature = JResolvedReferencedAsset(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( diff --git a/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp b/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp index 111b550a..fd7c2cc7 100644 --- a/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +++ b/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp @@ -15,7 +15,7 @@ namespace margelo::nitro::rive { if (isInstanceOf(JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName_impl::First::javaClassStatic())) { // It's a `std::shared_ptr` auto jniValue = static_cast(this)->getValue(); - return jniValue->cthis()->shared_cast(); + return jniValue->getJHybridViewModelInstanceSpec(); } else if (isInstanceOf(JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName_impl::Second::javaClassStatic())) { // It's a `DataBindMode` auto jniValue = static_cast(this)->getValue(); diff --git a/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp b/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp index 1e7a6e67..d2370928 100644 --- a/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +++ b/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp @@ -31,8 +31,8 @@ namespace margelo::nitro::rive { public: static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName;"; - static jni::local_ref create_0(jni::alias_ref value) { - static const auto method = javaClassStatic()->getStaticMethod)>("create"); + static jni::local_ref create_0(jni::alias_ref value) { + static const auto method = javaClassStatic()->getStaticMethod)>("create"); return method(javaClassStatic(), value); } static jni::local_ref create_1(jni::alias_ref value) { @@ -61,8 +61,8 @@ namespace margelo::nitro::rive { public: static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName$First;"; - [[nodiscard]] jni::local_ref getValue() const { - static const auto field = javaClassStatic()->getField("value"); + [[nodiscard]] jni::local_ref getValue() const { + static const auto field = javaClassStatic()->getField("value"); return getFieldValue(field); } }; diff --git a/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp b/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp index 1ece44f4..f2f3cdf9 100644 --- a/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +++ b/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp @@ -8,6 +8,7 @@ #include "JHybridRiveViewStateUpdater.hpp" #include "views/HybridRiveViewComponent.hpp" #include +#include namespace margelo::nitro::rive::views { @@ -15,73 +16,72 @@ using namespace facebook; using ConcreteStateData = react::ConcreteState; void JHybridRiveViewStateUpdater::updateViewProps(jni::alias_ref /* class */, - jni::alias_ref javaView, + jni::alias_ref javaView, jni::alias_ref stateWrapperInterface) { - JHybridRiveViewSpec* view = javaView->cthis(); + std::shared_ptr hybridView = javaView->getJHybridRiveViewSpec(); // Get concrete StateWrapperImpl from passed StateWrapper interface object jobject rawStateWrapper = stateWrapperInterface.get(); - if (!stateWrapperInterface->isInstanceOf(react::StateWrapperImpl::javaClassStatic())) { + if (!stateWrapperInterface->isInstanceOf(react::StateWrapperImpl::javaClassStatic())) [[unlikely]] { throw std::runtime_error("StateWrapper is not a StateWrapperImpl"); } auto stateWrapper = jni::alias_ref{ static_cast(rawStateWrapper)}; - std::shared_ptr state = stateWrapper->cthis()->getState(); - auto concreteState = std::dynamic_pointer_cast(state); + auto concreteState = std::static_pointer_cast(state); const HybridRiveViewState& data = concreteState->getData(); - const std::optional& maybeProps = data.getProps(); - if (!maybeProps.has_value()) { + const std::shared_ptr& props = data.getProps(); + if (props == nullptr) [[unlikely]] { // Props aren't set yet! throw std::runtime_error("HybridRiveViewState's data doesn't contain any props!"); } - const HybridRiveViewProps& props = maybeProps.value(); - if (props.artboardName.isDirty) { - view->setArtboardName(props.artboardName.value); - // TODO: Set isDirty = false + + // Update all props if they are dirty + if (props->artboardName.isDirty) { + hybridView->setArtboardName(props->artboardName.value); + props->artboardName.isDirty = false; } - if (props.stateMachineName.isDirty) { - view->setStateMachineName(props.stateMachineName.value); - // TODO: Set isDirty = false + if (props->stateMachineName.isDirty) { + hybridView->setStateMachineName(props->stateMachineName.value); + props->stateMachineName.isDirty = false; } - if (props.autoPlay.isDirty) { - view->setAutoPlay(props.autoPlay.value); - // TODO: Set isDirty = false + if (props->autoPlay.isDirty) { + hybridView->setAutoPlay(props->autoPlay.value); + props->autoPlay.isDirty = false; } - if (props.file.isDirty) { - view->setFile(props.file.value); - // TODO: Set isDirty = false + if (props->file.isDirty) { + hybridView->setFile(props->file.value); + props->file.isDirty = false; } - if (props.alignment.isDirty) { - view->setAlignment(props.alignment.value); - // TODO: Set isDirty = false + if (props->alignment.isDirty) { + hybridView->setAlignment(props->alignment.value); + props->alignment.isDirty = false; } - if (props.fit.isDirty) { - view->setFit(props.fit.value); - // TODO: Set isDirty = false + if (props->fit.isDirty) { + hybridView->setFit(props->fit.value); + props->fit.isDirty = false; } - if (props.layoutScaleFactor.isDirty) { - view->setLayoutScaleFactor(props.layoutScaleFactor.value); - // TODO: Set isDirty = false + if (props->layoutScaleFactor.isDirty) { + hybridView->setLayoutScaleFactor(props->layoutScaleFactor.value); + props->layoutScaleFactor.isDirty = false; } - if (props.dataBind.isDirty) { - view->setDataBind(props.dataBind.value); - // TODO: Set isDirty = false + if (props->dataBind.isDirty) { + hybridView->setDataBind(props->dataBind.value); + props->dataBind.isDirty = false; } - if (props.onError.isDirty) { - view->setOnError(props.onError.value); - // TODO: Set isDirty = false + if (props->onError.isDirty) { + hybridView->setOnError(props->onError.value); + props->onError.isDirty = false; } // Update hybridRef if it changed - if (props.hybridRef.isDirty) { + if (props->hybridRef.isDirty) { // hybridRef changed - call it with new this - const auto& maybeFunc = props.hybridRef.value; + const auto& maybeFunc = props->hybridRef.value; if (maybeFunc.has_value()) { - std::shared_ptr shared = javaView->cthis()->shared_cast(); - maybeFunc.value()(shared); + maybeFunc.value()(hybridView); } - // TODO: Set isDirty = false + props->hybridRef.isDirty = false; } } diff --git a/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp b/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp index 6aabe816..03b58dac 100644 --- a/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +++ b/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp @@ -12,8 +12,8 @@ #endif #include -#include #include +#include #include #include #include @@ -24,13 +24,13 @@ namespace margelo::nitro::rive::views { using namespace facebook; -class JHybridRiveViewStateUpdater: public jni::JavaClass { +class JHybridRiveViewStateUpdater final: public jni::JavaClass { public: static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/rive/views/HybridRiveViewStateUpdater;"; public: static void updateViewProps(jni::alias_ref /* class */, - jni::alias_ref view, + jni::alias_ref view, jni::alias_ref stateWrapperInterface); public: diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt index 6415cde0..11b8e926 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt @@ -23,13 +23,6 @@ sealed class EventPropertiesOutput { @DoNotStrip data class Third(@DoNotStrip val value: Double): EventPropertiesOutput() - @Deprecated("getAs() is not type-safe. Use fold/asFirstOrNull/asSecondOrNull instead.", level = DeprecationLevel.ERROR) - inline fun getAs(): T? = when (this) { - is First -> value as? T - is Second -> value as? T - is Third -> value as? T - } - val isFirst: Boolean get() = this is First val isSecond: Boolean diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt index 187fc873..e0fea0c5 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridBindableArtboardSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject BindableArtboard]" - } - // Properties @get:DoNotStrip @get:Keep @@ -49,7 +32,21 @@ abstract class HybridBindableArtboardSpec: HybridObject() { // Methods - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject BindableArtboard]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridBindableArtboardSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridBindableArtboardSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridBindableArtboardSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt index c72930a8..919d448b 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt @@ -26,23 +26,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveFileFactorySpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveFileFactory]" - } - // Properties @@ -63,7 +46,21 @@ abstract class HybridRiveFileFactorySpec: HybridObject() { @Keep abstract fun fromBytes(bytes: ArrayBuffer, loadCdn: Boolean, referencedAssets: ReferencedAssetsType?): Promise - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveFileFactory]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveFileFactorySpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveFileFactorySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveFileFactorySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt index 0c5de270..92746f59 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveFileSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveFile]" - } - // Properties @get:DoNotStrip @get:Keep @@ -75,7 +58,21 @@ abstract class HybridRiveFileSpec: HybridObject() { @Keep abstract fun getBindableArtboard(name: String): HybridBindableArtboardSpec - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveFile]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveFileSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveFileSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveFileSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt index d86418ca..d1cc5005 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt @@ -26,23 +26,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveImageFactorySpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveImageFactory]" - } - // Properties @@ -59,7 +42,21 @@ abstract class HybridRiveImageFactorySpec: HybridObject() { @Keep abstract fun loadFromBytesAsync(bytes: ArrayBuffer): Promise - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveImageFactory]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveImageFactorySpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveImageFactorySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveImageFactorySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt index 501fa546..3c5152a6 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveImageSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveImage]" - } - // Properties @get:DoNotStrip @get:Keep @@ -49,7 +32,21 @@ abstract class HybridRiveImageSpec: HybridObject() { // Methods - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveImage]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveImageSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveImageSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveImageSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt index de288e16..25925a69 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt @@ -25,23 +25,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveRuntimeSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveRuntime]" - } - // Properties @get:DoNotStrip @get:Keep @@ -56,7 +39,21 @@ abstract class HybridRiveRuntimeSpec: HybridObject() { @Keep abstract fun initialize(): Promise - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveRuntime]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveRuntimeSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveRuntimeSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveRuntimeSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt index 826a3b32..1e2f401a 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveSpec.kt @@ -24,32 +24,29 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } + // Properties + - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } + // Methods + @DoNotStrip + @Keep + abstract fun multiply(a: Double, b: Double): Double // Default implementation of `HybridObject.toString()` override fun toString(): String { return "[HybridObject Rive]" } - // Properties - - - // Methods + // C++ backing class @DoNotStrip @Keep - abstract fun multiply(a: Double, b: Double): Double - - private external fun initHybrid(): HybridData + protected open class CxxPart(javaPart: HybridRiveSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt index 44479bf8..b211c235 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt @@ -11,6 +11,7 @@ import androidx.annotation.Keep import com.facebook.jni.HybridData import com.facebook.proguard.annotations.DoNotStrip import com.margelo.nitro.core.Promise +import com.margelo.nitro.core.HybridObject import com.margelo.nitro.views.HybridView /** @@ -25,23 +26,6 @@ import com.margelo.nitro.views.HybridView "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveViewSpec: HybridView() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject RiveView]" - } - // Properties @get:DoNotStrip @get:Keep @@ -175,7 +159,21 @@ abstract class HybridRiveViewSpec: HybridView() { @Keep abstract fun getTextRunValue(name: String, path: String?): String - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveView]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveViewSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveViewSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveViewSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt index 36694357..f5e94172 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt @@ -24,32 +24,29 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelArtboardPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } + // Properties + - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } + // Methods + @DoNotStrip + @Keep + abstract fun set(artboard: HybridBindableArtboardSpec?): Unit // Default implementation of `HybridObject.toString()` override fun toString(): String { return "[HybridObject ViewModelArtboardProperty]" } - // Properties - - - // Methods + // C++ backing class @DoNotStrip @Keep - abstract fun set(artboard: HybridBindableArtboardSpec?): Unit - - private external fun initHybrid(): HybridData + protected open class CxxPart(javaPart: HybridViewModelArtboardPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelArtboardPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelArtboardPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt index 70e57ac6..d85ea31a 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelBooleanPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelBooleanProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -62,7 +45,21 @@ abstract class HybridViewModelBooleanPropertySpec: HybridViewModelPropertySpec() @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelBooleanProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelBooleanPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelBooleanPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelBooleanPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt index edf4b37b..cc77ae23 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelColorPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelColorProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -62,7 +45,21 @@ abstract class HybridViewModelColorPropertySpec: HybridViewModelPropertySpec() { @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelColorProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelColorPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelColorPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelColorPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt index b3ff4624..fc8ca0d1 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelEnumPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelEnumProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -62,7 +45,21 @@ abstract class HybridViewModelEnumPropertySpec: HybridViewModelPropertySpec() { @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelEnumProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelEnumPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelEnumPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelEnumPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt index 77f08942..de423447 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelImagePropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelImageProperty]" - } - // Properties @@ -62,7 +45,21 @@ abstract class HybridViewModelImagePropertySpec: HybridViewModelPropertySpec() { @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelImageProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelImagePropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelImagePropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelImagePropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt index 13e1f5c6..5727b5b2 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelInstanceSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelInstance]" - } - // Properties @get:DoNotStrip @get:Keep @@ -91,7 +74,21 @@ abstract class HybridViewModelInstanceSpec: HybridObject() { @Keep abstract fun replaceViewModel(path: String, instance: HybridViewModelInstanceSpec): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelInstance]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelInstanceSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridViewModelInstanceSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelInstanceSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt index 7c4943a8..b250f717 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelListPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelListProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -84,7 +67,21 @@ abstract class HybridViewModelListPropertySpec: HybridViewModelPropertySpec() { @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelListProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelListPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelListPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelListPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt index 8fd751c6..71b04eb2 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelNumberPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelNumberProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -62,7 +45,21 @@ abstract class HybridViewModelNumberPropertySpec: HybridViewModelPropertySpec() @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelNumberProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelNumberPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelNumberPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelNumberPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt index 76ec7d1d..22a65748 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt @@ -24,30 +24,27 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelPropertySpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } + // Properties + - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } + // Methods + // Default implementation of `HybridObject.toString()` override fun toString(): String { return "[HybridObject ViewModelProperty]" } - // Properties - - - // Methods - - - private external fun initHybrid(): HybridData + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelPropertySpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridViewModelPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt index d75482ae..be153d81 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelSpec: HybridObject() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModel]" - } - // Properties @get:DoNotStrip @get:Keep @@ -71,7 +54,21 @@ abstract class HybridViewModelSpec: HybridObject() { @Keep abstract fun createInstance(): HybridViewModelInstanceSpec? - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModel]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridViewModelSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelSpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt index 7cef1eef..6280b61b 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelStringPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelStringProperty]" - } - // Properties @get:DoNotStrip @get:Keep @@ -62,7 +45,21 @@ abstract class HybridViewModelStringPropertySpec: HybridViewModelPropertySpec() @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelStringProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelStringPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelStringPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelStringPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt index 60bcdb7b..8b8fe192 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt @@ -24,23 +24,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridViewModelTriggerPropertySpec: HybridViewModelPropertySpec() { - @DoNotStrip - private var mHybridData: HybridData = initHybrid() - - init { - super.updateNative(mHybridData) - } - - override fun updateNative(hybridData: HybridData) { - mHybridData = hybridData - super.updateNative(hybridData) - } - - // Default implementation of `HybridObject.toString()` - override fun toString(): String { - return "[HybridObject ViewModelTriggerProperty]" - } - // Properties @@ -62,7 +45,21 @@ abstract class HybridViewModelTriggerPropertySpec: HybridViewModelPropertySpec() @Keep abstract fun removeListeners(): Unit - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject ViewModelTriggerProperty]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridViewModelTriggerPropertySpec): HybridViewModelPropertySpec.CxxPart(javaPart) { + // C++ JHybridViewModelTriggerPropertySpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridViewModelTriggerPropertySpec" diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt index 1b22fa06..3aa5fb15 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt @@ -23,13 +23,6 @@ sealed class Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName { @DoNotStrip data class Third(@DoNotStrip val value: DataBindByName): Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName() - @Deprecated("getAs() is not type-safe. Use fold/asFirstOrNull/asSecondOrNull instead.", level = DeprecationLevel.ERROR) - inline fun getAs(): T? = when (this) { - is First -> value as? T - is Second -> value as? T - is Third -> value as? T - } - val isFirst: Boolean get() = this is First val isSecond: Boolean diff --git a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt index 69cff190..575244ab 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt @@ -19,7 +19,7 @@ import com.margelo.nitro.rive.* /** * Represents the React Native `ViewManager` for the "RiveView" Nitro HybridView. */ -open class HybridRiveViewManager: SimpleViewManager() { +public class HybridRiveViewManager: SimpleViewManager() { init { if (RecyclableView::class.java.isAssignableFrom(HybridRiveView::class.java)) { // Enable view recycling diff --git a/nitrogen/generated/android/riveOnLoad.cpp b/nitrogen/generated/android/riveOnLoad.cpp index 25e1473d..bc13470a 100644 --- a/nitrogen/generated/android/riveOnLoad.cpp +++ b/nitrogen/generated/android/riveOnLoad.cpp @@ -47,90 +47,130 @@ namespace margelo::nitro::rive { int initialize(JavaVM* vm) { + return facebook::jni::initialize(vm, []() { + ::margelo::nitro::rive::registerAllNatives(); + }); +} + +struct JHybridRiveSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/Rive;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveSpec(); + } +}; +struct JHybridRiveFileFactorySpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFileFactory;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveFileFactorySpec(); + } +}; +struct JHybridRiveFileSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFile;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveFileSpec(); + } +}; +struct JHybridRiveViewSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveView;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveViewSpec(); + } +}; +struct JHybridRiveImageFactorySpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveImageFactory;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveImageFactorySpec(); + } +}; +struct JHybridRiveRuntimeSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveRuntime;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveRuntimeSpec(); + } +}; + +void registerAllNatives() { using namespace margelo::nitro; using namespace margelo::nitro::rive; - using namespace facebook; - return facebook::jni::initialize(vm, [] { - // Register native JNI methods - margelo::nitro::rive::JHybridBindableArtboardSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveFileSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveFileFactorySpec::registerNatives(); - margelo::nitro::rive::JHybridRiveImageSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveImageFactorySpec::registerNatives(); - margelo::nitro::rive::JHybridRiveRuntimeSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveViewSpec::registerNatives(); - margelo::nitro::rive::JFunc_void_RiveError_cxx::registerNatives(); - margelo::nitro::rive::JFunc_void_UnifiedRiveEvent_cxx::registerNatives(); - margelo::nitro::rive::views::JHybridRiveViewStateUpdater::registerNatives(); - margelo::nitro::rive::JHybridViewModelSpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelInstanceSpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelPropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelNumberPropertySpec::registerNatives(); - margelo::nitro::rive::JFunc_void_cxx::registerNatives(); - margelo::nitro::rive::JFunc_void_double_cxx::registerNatives(); - margelo::nitro::rive::JHybridViewModelStringPropertySpec::registerNatives(); - margelo::nitro::rive::JFunc_void_std__string_cxx::registerNatives(); - margelo::nitro::rive::JHybridViewModelBooleanPropertySpec::registerNatives(); - margelo::nitro::rive::JFunc_void_bool_cxx::registerNatives(); - margelo::nitro::rive::JHybridViewModelColorPropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelEnumPropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelTriggerPropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelImagePropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelListPropertySpec::registerNatives(); - margelo::nitro::rive::JHybridViewModelArtboardPropertySpec::registerNatives(); + // Register native JNI methods + margelo::nitro::rive::JHybridBindableArtboardSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveFileSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveFileFactorySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveImageSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveImageFactorySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveRuntimeSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveViewSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JFunc_void_RiveError_cxx::registerNatives(); + margelo::nitro::rive::JFunc_void_UnifiedRiveEvent_cxx::registerNatives(); + margelo::nitro::rive::views::JHybridRiveViewStateUpdater::registerNatives(); + margelo::nitro::rive::JHybridViewModelSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelInstanceSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelNumberPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JFunc_void_cxx::registerNatives(); + margelo::nitro::rive::JFunc_void_double_cxx::registerNatives(); + margelo::nitro::rive::JHybridViewModelStringPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JFunc_void_std__string_cxx::registerNatives(); + margelo::nitro::rive::JHybridViewModelBooleanPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JFunc_void_bool_cxx::registerNatives(); + margelo::nitro::rive::JHybridViewModelColorPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelEnumPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelTriggerPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelImagePropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelListPropertySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridViewModelArtboardPropertySpec::CxxPart::registerNatives(); - // Register Nitro Hybrid Objects - HybridObjectRegistry::registerHybridObjectConstructor( - "Rive", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/Rive"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "RiveFileFactory", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveFileFactory"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "RiveFile", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveFile"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "RiveView", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveView"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "RiveImageFactory", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveImageFactory"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - HybridObjectRegistry::registerHybridObjectConstructor( - "RiveRuntime", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveRuntime"); - auto instance = object.create(); - return instance->cthis()->shared(); - } - ); - }); + // Register Nitro Hybrid Objects + HybridObjectRegistry::registerHybridObjectConstructor( + "Rive", + []() -> std::shared_ptr { + return JHybridRiveSpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "RiveFileFactory", + []() -> std::shared_ptr { + return JHybridRiveFileFactorySpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "RiveFile", + []() -> std::shared_ptr { + return JHybridRiveFileSpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "RiveView", + []() -> std::shared_ptr { + return JHybridRiveViewSpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "RiveImageFactory", + []() -> std::shared_ptr { + return JHybridRiveImageFactorySpecImpl::create(); + } + ); + HybridObjectRegistry::registerHybridObjectConstructor( + "RiveRuntime", + []() -> std::shared_ptr { + return JHybridRiveRuntimeSpecImpl::create(); + } + ); } } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/android/riveOnLoad.hpp b/nitrogen/generated/android/riveOnLoad.hpp index f93091d2..cd352636 100644 --- a/nitrogen/generated/android/riveOnLoad.hpp +++ b/nitrogen/generated/android/riveOnLoad.hpp @@ -6,20 +6,29 @@ /// #include +#include #include namespace margelo::nitro::rive { + [[deprecated("Use registerNatives() instead.")]] + int initialize(JavaVM* vm); + /** - * Initializes the native (C++) part of rive, and autolinks all Hybrid Objects. - * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`). + * Register the native (C++) part of rive, and autolinks all Hybrid Objects. + * Call this in your `JNI_OnLoad` function (probably inside `cpp-adapter.cpp`), + * inside a `facebook::jni::initialize(vm, ...)` call. * Example: * ```cpp (cpp-adapter.cpp) * JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM* vm, void*) { - * return margelo::nitro::rive::initialize(vm); + * return facebook::jni::initialize(vm, []() { + * // register all rive HybridObjects + * margelo::nitro::rive::registerNatives(); + * // any other custom registrations go here. + * }); * } * ``` */ - int initialize(JavaVM* vm); + void registerAllNatives(); } // namespace margelo::nitro::rive diff --git a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp index 425cbd31..720a827c 100644 --- a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +++ b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp @@ -211,7 +211,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline double get_std__optional_double_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -238,7 +238,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelSpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::optional @@ -253,7 +253,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::string get_std__optional_std__string_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::optional @@ -268,7 +268,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline ArtboardBy get_std__optional_ArtboardBy_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -295,7 +295,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridRiveImageSpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::unordered_map @@ -335,7 +335,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::unordered_map get_std__optional_std__unordered_map_std__string__ResolvedReferencedAsset__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::vector @@ -456,7 +456,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline ReferencedAssetsType get_std__optional_ReferencedAssetsType_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -602,7 +602,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline bool get_std__optional_bool_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::optional @@ -617,7 +617,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline Alignment get_std__optional_Alignment_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::optional @@ -632,7 +632,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline Fit get_std__optional_Fit_(const std::optional& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -694,7 +694,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::variant, DataBindMode, DataBindByName> get_std__optional_std__variant_std__shared_ptr_HybridViewModelInstanceSpec___DataBindMode__DataBindByName__(const std::optional, DataBindMode, DataBindByName>>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::function @@ -765,7 +765,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelInstanceSpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::variant @@ -840,7 +840,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::unordered_map> get_std__optional_std__unordered_map_std__string__std__variant_bool__std__string__double___(const std::optional>>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::function @@ -952,7 +952,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelNumberPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -982,7 +982,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelStringPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1012,7 +1012,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelBooleanPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1042,7 +1042,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelColorPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1072,7 +1072,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelEnumPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1102,7 +1102,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelTriggerPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1132,7 +1132,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelImagePropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1162,7 +1162,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelListPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: std::shared_ptr @@ -1192,7 +1192,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridViewModelArtboardPropertySpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } // pragma MARK: Result>> @@ -1341,7 +1341,7 @@ namespace margelo::nitro::rive::bridge::swift { return optional.has_value(); } inline std::shared_ptr get_std__optional_std__shared_ptr_HybridBindableArtboardSpec__(const std::optional>& optional) noexcept { - return *optional; + return optional.value(); } } // namespace margelo::nitro::rive::bridge::swift diff --git a/nitrogen/generated/ios/swift/ArtboardBy.swift b/nitrogen/generated/ios/swift/ArtboardBy.swift index ef7029c4..bdce5d33 100644 --- a/nitrogen/generated/ios/swift/ArtboardBy.swift +++ b/nitrogen/generated/ios/swift/ArtboardBy.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -42,7 +41,14 @@ public extension ArtboardBy { @inline(__always) var index: Double? { - return self.__index.value + return { () -> Double? in + if bridge.has_value_std__optional_double_(self.__index) { + let __unwrapped = bridge.get_std__optional_double_(self.__index) + return __unwrapped + } else { + return nil + } + }() } @inline(__always) diff --git a/nitrogen/generated/ios/swift/DataBindByName.swift b/nitrogen/generated/ios/swift/DataBindByName.swift index 8b909dd9..ad120e44 100644 --- a/nitrogen/generated/ios/swift/DataBindByName.swift +++ b/nitrogen/generated/ios/swift/DataBindByName.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void.swift b/nitrogen/generated/ios/swift/Func_void.swift index 397f6506..a516b954 100644 --- a/nitrogen/generated/ios/swift/Func_void.swift +++ b/nitrogen/generated/ios/swift/Func_void.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_RiveError.swift b/nitrogen/generated/ios/swift/Func_void_RiveError.swift index eb65eba3..9f734990 100644 --- a/nitrogen/generated/ios/swift/Func_void_RiveError.swift +++ b/nitrogen/generated/ios/swift/Func_void_RiveError.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift b/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift index 403337b1..0d1bfa7e 100644 --- a/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +++ b/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_bool.swift b/nitrogen/generated/ios/swift/Func_void_bool.swift index 7348e3a7..c3aa1305 100644 --- a/nitrogen/generated/ios/swift/Func_void_bool.swift +++ b/nitrogen/generated/ios/swift/Func_void_bool.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_double.swift b/nitrogen/generated/ios/swift/Func_void_double.swift index d35f255e..5356b2fb 100644 --- a/nitrogen/generated/ios/swift/Func_void_double.swift +++ b/nitrogen/generated/ios/swift/Func_void_double.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift b/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift index 2ea0e877..cf262076 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift index 919a63e2..5a81f00a 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift index 6ec0e7a8..d36b53c9 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/Func_void_std__string.swift b/nitrogen/generated/ios/swift/Func_void_std__string.swift index cbf89bd8..6c9c2bb8 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__string.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__string.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift b/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift index d57d4976..2e7f77e4 100644 --- a/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift +++ b/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridBindableArtboardSpec`` diff --git a/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift index f685fa79..3fb2e4cc 100644 --- a/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift b/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift index df3351e7..22b5d9a0 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveFileFactorySpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift index 0a39cfc8..137df8dc 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift b/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift index 1c22c3dc..8c840b59 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveFileSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift index 906a1ab1..1c481956 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift b/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift index 14f93cda..96301f84 100644 --- a/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveImageFactorySpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift index ae49b659..c0c8afbe 100644 --- a/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift b/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift index 2ffd9462..0fa23b56 100644 --- a/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveImageSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift index 19753bf5..edaf9332 100644 --- a/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift b/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift index 67820ac7..e56ad3c9 100644 --- a/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveRuntimeSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift index 4ffe527f..36b44b13 100644 --- a/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveSpec.swift b/nitrogen/generated/ios/swift/HybridRiveSpec.swift index 8ca7f1e2..6f7befe9 100644 --- a/nitrogen/generated/ios/swift/HybridRiveSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift index 84ef93e3..da3ee3a6 100644 --- a/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift b/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift index 341c7b40..42d644fc 100644 --- a/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveViewSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift index 134e163a..3901ed53 100644 --- a/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -259,7 +258,14 @@ open class HybridRiveViewSpec_cxx { } @inline(__always) set { - self.__implementation.layoutScaleFactor = newValue.value + self.__implementation.layoutScaleFactor = { () -> Double? in + if bridge.has_value_std__optional_double_(newValue) { + let __unwrapped = bridge.get_std__optional_double_(newValue) + return __unwrapped + } else { + return nil + } + }() } } @@ -630,7 +636,7 @@ open class HybridRiveViewSpec_cxx { } public final func maybePrepareForRecycle() { - guard let recyclable = __implementation as? RecyclableView else { return } + guard let recyclable = __implementation as? any RecyclableView else { return } recyclable.prepareForRecycle() } } diff --git a/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift index 232807cd..d9c691e9 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelArtboardPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift index fc7fd184..e665565c 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift index 94db03e7..88a229af 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelBooleanPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift index 19ef6628..784585ee 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift index f25057a8..89230cdb 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelColorPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift index 3e8cf09a..9278aa63 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift index 7e610beb..702e5031 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelEnumPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift index cbe5f366..3a31751e 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift index 5f20cab3..695b1185 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelImagePropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift index 735e6751..50b3fe87 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift index 1d7d4edd..f8f54d46 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelInstanceSpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift index 4b98ed40..8d2b518c 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift index af415de4..60f6579f 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelListPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift index 83f2274b..4b074636 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift index e025fb9e..a29d5b06 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelNumberPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift index 064c80bc..80f839c1 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift index 7921786a..99c53bd8 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift index 9f659302..6fdc22ef 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelSpec.swift b/nitrogen/generated/ios/swift/HybridViewModelSpec.swift index 23ab3097..e973a3be 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelSpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift index 4d84425e..5c7ad3b0 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift index f21cef4a..4ce63bef 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelStringPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift index 53bd50cd..76d1cb29 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift b/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift index bd13aaed..fc7adf0d 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridViewModelTriggerPropertySpec`` diff --git a/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift b/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift index 375235c6..ec1c0091 100644 --- a/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/ReferencedAssetsType.swift b/nitrogen/generated/ios/swift/ReferencedAssetsType.swift index e4439241..d3ff40cc 100644 --- a/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +++ b/nitrogen/generated/ios/swift/ReferencedAssetsType.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift b/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift index a93cc8b9..b73ee547 100644 --- a/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +++ b/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/RiveError.swift b/nitrogen/generated/ios/swift/RiveError.swift index fb76144e..3dd559be 100644 --- a/nitrogen/generated/ios/swift/RiveError.swift +++ b/nitrogen/generated/ios/swift/RiveError.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** diff --git a/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift b/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift index 255f74ec..31afcf9d 100644 --- a/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +++ b/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /** @@ -74,7 +73,14 @@ public extension UnifiedRiveEvent { @inline(__always) var delay: Double? { - return self.__delay.value + return { () -> Double? in + if bridge.has_value_std__optional_double_(self.__delay) { + let __unwrapped = bridge.get_std__optional_double_(self.__delay) + return __unwrapped + } else { + return nil + } + }() } @inline(__always) diff --git a/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp b/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp index cec52808..d3f60ffa 100644 --- a/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +++ b/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp @@ -127,19 +127,6 @@ namespace margelo::nitro::rive::views { } }()) { } - HybridRiveViewProps::HybridRiveViewProps(const HybridRiveViewProps& other): - react::ViewProps(), - artboardName(other.artboardName), - stateMachineName(other.stateMachineName), - autoPlay(other.autoPlay), - file(other.file), - alignment(other.alignment), - fit(other.fit), - layoutScaleFactor(other.layoutScaleFactor), - dataBind(other.dataBind), - onError(other.onError), - hybridRef(other.hybridRef) { } - bool HybridRiveViewProps::filterObjectKeys(const std::string& propName) { switch (hashString(propName)) { case hashString("artboardName"): return true; @@ -173,10 +160,10 @@ namespace margelo::nitro::rive::views { void HybridRiveViewComponentDescriptor::adopt(react::ShadowNode& shadowNode) const { // This is called immediately after `ShadowNode` is created, cloned or in progress. // On Android, we need to wrap props in our state, which gets routed through Java and later unwrapped in JNI/C++. - auto& concreteShadowNode = dynamic_cast(shadowNode); - const HybridRiveViewProps& props = concreteShadowNode.getConcreteProps(); - HybridRiveViewState state; - state.setProps(props); + auto& concreteShadowNode = static_cast(shadowNode); + const std::shared_ptr& constProps = concreteShadowNode.getConcreteSharedProps(); + const std::shared_ptr& props = std::const_pointer_cast(constProps); + HybridRiveViewState state{props}; concreteShadowNode.setStateData(std::move(state)); } #endif diff --git a/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp b/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp index d523b563..aa25dc25 100644 --- a/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +++ b/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp @@ -45,7 +45,6 @@ namespace margelo::nitro::rive::views { class HybridRiveViewProps final: public react::ViewProps { public: HybridRiveViewProps() = default; - HybridRiveViewProps(const HybridRiveViewProps&); HybridRiveViewProps(const react::PropsParserContext& context, const HybridRiveViewProps& sourceProps, const react::RawProps& rawProps); @@ -72,10 +71,14 @@ namespace margelo::nitro::rive::views { class HybridRiveViewState final { public: HybridRiveViewState() = default; + explicit HybridRiveViewState(const std::shared_ptr& props): + _props(props) {} public: - void setProps(const HybridRiveViewProps& props) { _props.emplace(props); } - const std::optional& getProps() const { return _props; } + [[nodiscard]] + const std::shared_ptr& getProps() const { + return _props; + } public: #ifdef ANDROID @@ -89,7 +92,7 @@ namespace margelo::nitro::rive::views { #endif private: - std::optional _props; + std::shared_ptr _props; }; /** @@ -105,7 +108,7 @@ namespace margelo::nitro::rive::views { */ class HybridRiveViewComponentDescriptor final: public react::ConcreteComponentDescriptor { public: - HybridRiveViewComponentDescriptor(const react::ComponentDescriptorParameters& parameters); + explicit HybridRiveViewComponentDescriptor(const react::ComponentDescriptorParameters& parameters); public: /** diff --git a/package.json b/package.json index cda3495f..8914e4a2 100644 --- a/package.json +++ b/package.json @@ -92,12 +92,12 @@ "eslint-plugin-jest": "^29.1.0", "eslint-plugin-prettier": "^5.2.3", "jest": "^29.7.0", - "nitrogen": "0.33.2", + "nitrogen": "0.35.0", "prettier": "^3.0.3", "react": "19.0.0", "react-native": "0.79.2", "react-native-builder-bob": "^0.40.10", - "react-native-nitro-modules": "0.34.1", + "react-native-nitro-modules": "0.35.0", "react-test-renderer": "19.0.0", "release-it": "^17.10.0", "turbo": "^1.10.7", @@ -106,7 +106,7 @@ "peerDependencies": { "react": "*", "react-native": "*", - "react-native-nitro-modules": ">=0.33.2 <0.35.0" + "react-native-nitro-modules": ">=0.35.0 <0.36" }, "workspaces": [ "example", diff --git a/yarn.lock b/yarn.lock index d3978072..eac83233 100644 --- a/yarn.lock +++ b/yarn.lock @@ -4476,12 +4476,12 @@ __metadata: eslint-plugin-jest: ^29.1.0 eslint-plugin-prettier: ^5.2.3 jest: ^29.7.0 - nitrogen: 0.33.2 + nitrogen: 0.35.0 prettier: ^3.0.3 react: 19.0.0 react-native: 0.79.2 react-native-builder-bob: ^0.40.10 - react-native-nitro-modules: 0.34.1 + react-native-nitro-modules: 0.35.0 react-test-renderer: 19.0.0 release-it: ^17.10.0 turbo: ^1.10.7 @@ -4489,7 +4489,7 @@ __metadata: peerDependencies: react: "*" react-native: "*" - react-native-nitro-modules: ">=0.33.2 <0.35.0" + react-native-nitro-modules: ">=0.35.0 <0.36" languageName: unknown linkType: soft @@ -8628,7 +8628,7 @@ __metadata: react-dom: 19.1.0 react-native: 0.81.5 react-native-gesture-handler: 2.29.1 - react-native-nitro-modules: 0.33.2 + react-native-nitro-modules: 0.35.0 react-native-reanimated: 4.1.5 react-native-safe-area-context: ~5.6.0 react-native-screens: ~4.16.0 @@ -13067,18 +13067,18 @@ __metadata: languageName: node linkType: hard -"nitrogen@npm:0.33.2": - version: 0.33.2 - resolution: "nitrogen@npm:0.33.2" +"nitrogen@npm:0.35.0": + version: 0.35.0 + resolution: "nitrogen@npm:0.35.0" dependencies: chalk: ^5.3.0 - react-native-nitro-modules: ^0.33.2 + react-native-nitro-modules: ^0.35.0 ts-morph: ^27.0.0 yargs: ^18.0.0 zod: ^4.0.5 bin: nitrogen: lib/index.js - checksum: bf0572f1550e626971453396e6d50ceb182bcea12f741034aaa653bb0d7ffb8a3cd689d354dc370cf91ecdb8f8a600ef3c3211651268a2ecb301523d63455291 + checksum: d99d27ff6c5cacf1acaf11aa21ee58b401b1d185086b103a6cc26e92433505e4aef93b8a8281b21f872f219d8ad7a96412ac28c36894542a709eebb86e523fc3 languageName: node linkType: hard @@ -14402,23 +14402,13 @@ __metadata: languageName: node linkType: hard -"react-native-nitro-modules@npm:0.33.2, react-native-nitro-modules@npm:^0.33.2": - version: 0.33.2 - resolution: "react-native-nitro-modules@npm:0.33.2" +"react-native-nitro-modules@npm:0.35.0, react-native-nitro-modules@npm:^0.35.0": + version: 0.35.0 + resolution: "react-native-nitro-modules@npm:0.35.0" peerDependencies: react: "*" react-native: "*" - checksum: 2c1f4d4d40172a3d756e71d7ecf61d754ed79a4fde102e24b953df980282096fb3a1e04381f9aaefa8c62dfc89b29f098cc22747786c3feddc0087721961b3dd - languageName: node - linkType: hard - -"react-native-nitro-modules@npm:0.34.1": - version: 0.34.1 - resolution: "react-native-nitro-modules@npm:0.34.1" - peerDependencies: - react: "*" - react-native: "*" - checksum: 939ce43663e5c28a83d2aa6b8f3fe83ee1da7518cba3c91b53137f6e6c0176065dd65f7f8090b12b3dde56083d3a9632a02b6313a6cd8165bedcb61d777a9f58 + checksum: f006daa1aa58f1a0165a4d6fc087c8d190f2857a7acfd6b47080e5979f05beb20455ed3c66831d489df4eb57d2f430d1610094ed4d6ae3946e17d83362161aa6 languageName: node linkType: hard @@ -14465,7 +14455,7 @@ __metadata: react-native-builder-bob: ^0.40.10 react-native-gesture-handler: 2.29.1 react-native-harness: 1.0.0-alpha.25 - react-native-nitro-modules: 0.33.2 + react-native-nitro-modules: 0.35.0 react-native-reanimated: 4.1.5 react-native-safe-area-context: ^5.4.0 react-native-worklets: 0.6.1