From c2639d03adcafecb4864a2bec3b1d16d2c5e6497 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Fri, 13 Mar 2026 08:38:27 +0100 Subject: [PATCH 1/3] fix!: upgrade nitro-modules to 0.35.0 BREAKING CHANGE: minimum nitro-modules version is now 0.35.0 --- example/package.json | 2 +- expo-example/package.json | 2 +- ios/DataSource.swift | 2 +- ios/HybridRiveFileFactory.swift | 2 +- ios/HybridRiveImageFactory.swift | 2 +- .../c++/JHybridBindableArtboardSpec.cpp | 44 ++-- .../c++/JHybridBindableArtboardSpec.hpp | 41 ++-- .../android/c++/JHybridFallbackFontSpec.cpp | 42 ++-- .../android/c++/JHybridFallbackFontSpec.hpp | 41 ++-- .../c++/JHybridRiveFileFactorySpec.cpp | 66 +++--- .../c++/JHybridRiveFileFactorySpec.hpp | 41 ++-- .../android/c++/JHybridRiveFileSpec.cpp | 66 +++--- .../android/c++/JHybridRiveFileSpec.hpp | 41 ++-- .../android/c++/JHybridRiveFontConfigSpec.cpp | 74 +++---- .../android/c++/JHybridRiveFontConfigSpec.hpp | 41 ++-- .../c++/JHybridRiveImageFactorySpec.cpp | 60 +++--- .../c++/JHybridRiveImageFactorySpec.hpp | 41 ++-- .../android/c++/JHybridRiveImageSpec.cpp | 44 ++-- .../android/c++/JHybridRiveImageSpec.hpp | 41 ++-- .../android/c++/JHybridRiveRuntimeSpec.cpp | 48 ++--- .../android/c++/JHybridRiveRuntimeSpec.hpp | 41 ++-- .../android/c++/JHybridRiveViewSpec.cpp | 114 +++++----- .../android/c++/JHybridRiveViewSpec.hpp | 41 ++-- .../JHybridViewModelArtboardPropertySpec.cpp | 44 ++-- .../JHybridViewModelArtboardPropertySpec.hpp | 42 ++-- .../JHybridViewModelBooleanPropertySpec.cpp | 50 ++--- .../JHybridViewModelBooleanPropertySpec.hpp | 42 ++-- .../c++/JHybridViewModelColorPropertySpec.cpp | 50 ++--- .../c++/JHybridViewModelColorPropertySpec.hpp | 42 ++-- .../c++/JHybridViewModelEnumPropertySpec.cpp | 50 ++--- .../c++/JHybridViewModelEnumPropertySpec.hpp | 42 ++-- .../c++/JHybridViewModelImagePropertySpec.cpp | 48 ++--- .../c++/JHybridViewModelImagePropertySpec.hpp | 42 ++-- .../c++/JHybridViewModelInstanceSpec.cpp | 86 ++++---- .../c++/JHybridViewModelInstanceSpec.hpp | 41 ++-- .../c++/JHybridViewModelListPropertySpec.cpp | 62 +++--- .../c++/JHybridViewModelListPropertySpec.hpp | 42 ++-- .../JHybridViewModelNumberPropertySpec.cpp | 50 ++--- .../JHybridViewModelNumberPropertySpec.hpp | 42 ++-- .../c++/JHybridViewModelPropertySpec.cpp | 42 ++-- .../c++/JHybridViewModelPropertySpec.hpp | 41 ++-- .../android/c++/JHybridViewModelSpec.cpp | 64 +++--- .../android/c++/JHybridViewModelSpec.hpp | 41 ++-- .../JHybridViewModelStringPropertySpec.cpp | 50 ++--- .../JHybridViewModelStringPropertySpec.hpp | 42 ++-- .../JHybridViewModelTriggerPropertySpec.cpp | 48 ++--- .../JHybridViewModelTriggerPropertySpec.hpp | 42 ++-- .../android/c++/JResolvedReferencedAsset.hpp | 8 +- ...stanceSpec_DataBindMode_DataBindByName.cpp | 2 +- ...stanceSpec_DataBindMode_DataBindByName.hpp | 8 +- .../c++/views/JHybridRiveViewStateUpdater.cpp | 80 +++---- .../c++/views/JHybridRiveViewStateUpdater.hpp | 6 +- .../nitro/rive/EventPropertiesOutput.kt | 7 - .../nitro/rive/HybridBindableArtboardSpec.kt | 33 ++- .../nitro/rive/HybridFallbackFontSpec.kt | 31 ++- .../nitro/rive/HybridRiveFileFactorySpec.kt | 33 ++- .../margelo/nitro/rive/HybridRiveFileSpec.kt | 33 ++- .../nitro/rive/HybridRiveFontConfigSpec.kt | 33 ++- .../nitro/rive/HybridRiveImageFactorySpec.kt | 33 ++- .../margelo/nitro/rive/HybridRiveImageSpec.kt | 33 ++- .../nitro/rive/HybridRiveRuntimeSpec.kt | 33 ++- .../margelo/nitro/rive/HybridRiveViewSpec.kt | 34 ++- .../HybridViewModelArtboardPropertySpec.kt | 31 ++- .../HybridViewModelBooleanPropertySpec.kt | 33 ++- .../rive/HybridViewModelColorPropertySpec.kt | 33 ++- .../rive/HybridViewModelEnumPropertySpec.kt | 33 ++- .../rive/HybridViewModelImagePropertySpec.kt | 33 ++- .../nitro/rive/HybridViewModelInstanceSpec.kt | 33 ++- .../rive/HybridViewModelListPropertySpec.kt | 33 ++- .../rive/HybridViewModelNumberPropertySpec.kt | 33 ++- .../nitro/rive/HybridViewModelPropertySpec.kt | 31 ++- .../margelo/nitro/rive/HybridViewModelSpec.kt | 33 ++- .../rive/HybridViewModelStringPropertySpec.kt | 33 ++- .../HybridViewModelTriggerPropertySpec.kt | 33 ++- ...nstanceSpec_DataBindMode_DataBindByName.kt | 7 - .../nitro/rive/views/HybridRiveViewManager.kt | 2 +- nitrogen/generated/android/riveOnLoad.cpp | 202 +++++++++++------- nitrogen/generated/android/riveOnLoad.hpp | 17 +- .../generated/ios/RNRive-Swift-Cxx-Bridge.hpp | 46 ++-- nitrogen/generated/ios/swift/ArtboardBy.swift | 10 +- .../generated/ios/swift/DataBindByName.swift | 1 - nitrogen/generated/ios/swift/Func_void.swift | 1 - .../ios/swift/Func_void_RiveError.swift | 1 - .../swift/Func_void_UnifiedRiveEvent.swift | 1 - .../generated/ios/swift/Func_void_bool.swift | 1 - .../ios/swift/Func_void_double.swift | 1 - .../swift/Func_void_std__exception_ptr.swift | 1 - ...__shared_ptr_HybridFallbackFontSpec_.swift | 1 - ..._std__shared_ptr_HybridRiveFileSpec_.swift | 1 - ...std__shared_ptr_HybridRiveImageSpec_.swift | 1 - .../ios/swift/Func_void_std__string.swift | 1 - .../swift/HybridBindableArtboardSpec.swift | 1 - .../HybridBindableArtboardSpec_cxx.swift | 1 - .../ios/swift/HybridFallbackFontSpec.swift | 1 - .../swift/HybridFallbackFontSpec_cxx.swift | 1 - .../ios/swift/HybridRiveFileFactorySpec.swift | 1 - .../swift/HybridRiveFileFactorySpec_cxx.swift | 1 - .../ios/swift/HybridRiveFileSpec.swift | 1 - .../ios/swift/HybridRiveFileSpec_cxx.swift | 1 - .../ios/swift/HybridRiveFontConfigSpec.swift | 1 - .../swift/HybridRiveFontConfigSpec_cxx.swift | 1 - .../swift/HybridRiveImageFactorySpec.swift | 1 - .../HybridRiveImageFactorySpec_cxx.swift | 1 - .../ios/swift/HybridRiveImageSpec.swift | 1 - .../ios/swift/HybridRiveImageSpec_cxx.swift | 1 - .../ios/swift/HybridRiveRuntimeSpec.swift | 1 - .../ios/swift/HybridRiveRuntimeSpec_cxx.swift | 1 - .../ios/swift/HybridRiveViewSpec.swift | 1 - .../ios/swift/HybridRiveViewSpec_cxx.swift | 12 +- .../HybridViewModelArtboardPropertySpec.swift | 1 - ...ridViewModelArtboardPropertySpec_cxx.swift | 1 - .../HybridViewModelBooleanPropertySpec.swift | 1 - ...bridViewModelBooleanPropertySpec_cxx.swift | 1 - .../HybridViewModelColorPropertySpec.swift | 1 - ...HybridViewModelColorPropertySpec_cxx.swift | 1 - .../HybridViewModelEnumPropertySpec.swift | 1 - .../HybridViewModelEnumPropertySpec_cxx.swift | 1 - .../HybridViewModelImagePropertySpec.swift | 1 - ...HybridViewModelImagePropertySpec_cxx.swift | 1 - .../swift/HybridViewModelInstanceSpec.swift | 1 - .../HybridViewModelInstanceSpec_cxx.swift | 1 - .../HybridViewModelListPropertySpec.swift | 1 - .../HybridViewModelListPropertySpec_cxx.swift | 1 - .../HybridViewModelNumberPropertySpec.swift | 1 - ...ybridViewModelNumberPropertySpec_cxx.swift | 1 - .../swift/HybridViewModelPropertySpec.swift | 1 - .../HybridViewModelPropertySpec_cxx.swift | 1 - .../ios/swift/HybridViewModelSpec.swift | 1 - .../ios/swift/HybridViewModelSpec_cxx.swift | 1 - .../HybridViewModelStringPropertySpec.swift | 1 - ...ybridViewModelStringPropertySpec_cxx.swift | 1 - .../HybridViewModelTriggerPropertySpec.swift | 1 - ...bridViewModelTriggerPropertySpec_cxx.swift | 1 - .../ios/swift/ReferencedAssetsType.swift | 1 - .../ios/swift/ResolvedReferencedAsset.swift | 1 - nitrogen/generated/ios/swift/RiveError.swift | 1 - .../ios/swift/UnifiedRiveEvent.swift | 10 +- .../c++/views/HybridRiveViewComponent.cpp | 21 +- .../c++/views/HybridRiveViewComponent.hpp | 13 +- package.json | 6 +- yarn.lock | 38 ++-- 141 files changed, 1528 insertions(+), 1792 deletions(-) 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++/JHybridFallbackFontSpec.cpp b/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp index d3e62d0d..60108d47 100644 --- a/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp @@ -13,37 +13,31 @@ namespace margelo::nitro::rive { - jni::local_ref JHybridFallbackFontSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridFallbackFontSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridFallbackFontSpec::initHybrid), - }); + std::shared_ptr JHybridFallbackFontSpec::JavaPart::getJHybridFallbackFontSpec() { + 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 JHybridFallbackFontSpec!"); + } + return castHybridObject; } - size_t JHybridFallbackFontSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridFallbackFontSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridFallbackFontSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridFallbackFontSpec::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 JHybridFallbackFontSpec::JavaPart!"); } - return false; - } - - void JHybridFallbackFontSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridFallbackFontSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridFallbackFontSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridFallbackFontSpec::CxxPart::initHybrid), + }); } // Properties diff --git a/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp b/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp index 52a871dc..ecf7219f 100644 --- a/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridFallbackFontSpec: public jni::HybridClass, - public virtual HybridFallbackFontSpec { + class JHybridFallbackFontSpec: public virtual HybridFallbackFontSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridFallbackFontSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridFallbackFontSpec(jni::alias_ref jThis) : - HybridObject(HybridFallbackFontSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridFallbackFontSpec;"; + std::shared_ptr getJHybridFallbackFontSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridFallbackFontSpec$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 JHybridFallbackFontSpec(const jni::local_ref& javaPart): + HybridObject(HybridFallbackFontSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridFallbackFontSpec() 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++/JHybridRiveFontConfigSpec.cpp b/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp index 62759763..0f641031 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp +++ b/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp @@ -23,37 +23,31 @@ namespace margelo::nitro::rive { class HybridFallbackFontSpec; } namespace margelo::nitro::rive { - jni::local_ref JHybridRiveFontConfigSpec::initHybrid(jni::alias_ref jThis) { - return makeCxxInstance(jThis); - } - - void JHybridRiveFontConfigSpec::registerNatives() { - registerHybrid({ - makeNativeMethod("initHybrid", JHybridRiveFontConfigSpec::initHybrid), - }); + std::shared_ptr JHybridRiveFontConfigSpec::JavaPart::getJHybridRiveFontConfigSpec() { + 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 JHybridRiveFontConfigSpec!"); + } + return castHybridObject; } - size_t JHybridRiveFontConfigSpec::getExternalMemorySize() noexcept { - static const auto method = javaClassStatic()->getMethod("getMemorySize"); - return method(_javaPart); + jni::local_ref JHybridRiveFontConfigSpec::CxxPart::initHybrid(jni::alias_ref jThis) { + return makeCxxInstance(jThis); } - bool JHybridRiveFontConfigSpec::equals(const std::shared_ptr& other) { - if (auto otherCast = std::dynamic_pointer_cast(other)) { - return _javaPart == otherCast->_javaPart; + std::shared_ptr JHybridRiveFontConfigSpec::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 JHybridRiveFontConfigSpec::JavaPart!"); } - return false; - } - - void JHybridRiveFontConfigSpec::dispose() noexcept { - static const auto method = javaClassStatic()->getMethod("dispose"); - method(_javaPart); + return std::make_shared(castJavaPart); } - std::string JHybridRiveFontConfigSpec::toString() { - static const auto method = javaClassStatic()->getMethod("toString"); - auto javaString = method(_javaPart); - return javaString->toStdString(); + void JHybridRiveFontConfigSpec::CxxPart::registerNatives() { + registerHybrid({ + makeNativeMethod("initHybrid", JHybridRiveFontConfigSpec::CxxPart::initHybrid), + }); } // Properties @@ -61,13 +55,13 @@ namespace margelo::nitro::rive { // Methods std::shared_ptr>> JHybridRiveFontConfigSpec::loadFontFromURL(const std::string& url) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* url */)>("loadFontFromURL"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* url */)>("loadFontFromURL"); 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->getJHybridFallbackFontSpec()); }); __result->cthis()->addOnRejectedListener([=](const jni::alias_ref& __throwable) { jni::JniException __jniError(__throwable); @@ -77,40 +71,40 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr JHybridRiveFontConfigSpec::loadFontFromResource(const std::string& resource) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* resource */)>("loadFontFromResource"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* resource */)>("loadFontFromResource"); auto __result = method(_javaPart, jni::make_jstring(resource)); - return __result->cthis()->shared_cast(); + return __result->getJHybridFallbackFontSpec(); } std::shared_ptr JHybridRiveFontConfigSpec::loadFontFromBytes(const std::shared_ptr& bytes) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* bytes */)>("loadFontFromBytes"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* bytes */)>("loadFontFromBytes"); auto __result = method(_javaPart, JArrayBuffer::wrap(bytes)); - return __result->cthis()->shared_cast(); + return __result->getJHybridFallbackFontSpec(); } std::shared_ptr JHybridRiveFontConfigSpec::loadFontByName(const std::string& name) { - static const auto method = javaClassStatic()->getMethod(jni::alias_ref /* name */)>("loadFontByName"); + static const auto method = _javaPart->javaClassStatic()->getMethod(jni::alias_ref /* name */)>("loadFontByName"); auto __result = method(_javaPart, jni::make_jstring(name)); - return __result->cthis()->shared_cast(); + return __result->getJHybridFallbackFontSpec(); } std::shared_ptr JHybridRiveFontConfigSpec::getSystemDefaultFont() { - static const auto method = javaClassStatic()->getMethod()>("getSystemDefaultFont"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("getSystemDefaultFont"); auto __result = method(_javaPart); - return __result->cthis()->shared_cast(); + return __result->getJHybridFallbackFontSpec(); } void JHybridRiveFontConfigSpec::setFontsForWeight(double weight, const std::vector>& fonts) { - static const auto method = javaClassStatic()->getMethod> /* fonts */)>("setFontsForWeight"); + static const auto method = _javaPart->javaClassStatic()->getMethod> /* fonts */)>("setFontsForWeight"); method(_javaPart, weight, [&]() { size_t __size = fonts.size(); - jni::local_ref> __array = jni::JArrayClass::newArray(__size); + jni::local_ref> __array = jni::JArrayClass::newArray(__size); for (size_t __i = 0; __i < __size; __i++) { const auto& __element = fonts[__i]; auto __elementJni = std::dynamic_pointer_cast(__element)->getJavaPart(); - __array->setElement(__i, __elementJni.get()); + __array->setElement(__i, *__elementJni); } return __array; }()); } std::shared_ptr> JHybridRiveFontConfigSpec::applyFallbackFonts() { - static const auto method = javaClassStatic()->getMethod()>("applyFallbackFonts"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("applyFallbackFonts"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); @@ -125,7 +119,7 @@ namespace margelo::nitro::rive { }(); } std::shared_ptr> JHybridRiveFontConfigSpec::clearFallbackFonts() { - static const auto method = javaClassStatic()->getMethod()>("clearFallbackFonts"); + static const auto method = _javaPart->javaClassStatic()->getMethod()>("clearFallbackFonts"); auto __result = method(_javaPart); return [&]() { auto __promise = Promise::create(); diff --git a/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp b/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp index ff10b319..d314d5c1 100644 --- a/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp +++ b/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp @@ -18,34 +18,33 @@ namespace margelo::nitro::rive { using namespace facebook; - class JHybridRiveFontConfigSpec: public jni::HybridClass, - public virtual HybridRiveFontConfigSpec { + class JHybridRiveFontConfigSpec: public virtual HybridRiveFontConfigSpec, public virtual JHybridObject { public: - static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfigSpec;"; - static jni::local_ref initHybrid(jni::alias_ref jThis); - static void registerNatives(); - - protected: - // C++ constructor (called from Java via `initHybrid()`) - explicit JHybridRiveFontConfigSpec(jni::alias_ref jThis) : - HybridObject(HybridRiveFontConfigSpec::TAG), - HybridBase(jThis), - _javaPart(jni::make_global(jThis)) {} + struct JavaPart: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfigSpec;"; + std::shared_ptr getJHybridRiveFontConfigSpec(); + }; + struct CxxPart: public jni::HybridClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfigSpec$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 JHybridRiveFontConfigSpec(const jni::local_ref& javaPart): + HybridObject(HybridRiveFontConfigSpec::TAG), + JHybridObject(javaPart), + _javaPart(jni::make_global(javaPart)) {} ~JHybridRiveFontConfigSpec() 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; } @@ -65,9 +64,7 @@ namespace margelo::nitro::rive { std::shared_ptr> clearFallbackFonts() 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++/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/HybridFallbackFontSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt index 615dc0c1..d4326609 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt @@ -24,30 +24,27 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridFallbackFontSpec: 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 FallbackFont]" } - // Properties - - - // Methods - - - private external fun initHybrid(): HybridData + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridFallbackFontSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridFallbackFontSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridFallbackFontSpec" 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/HybridRiveFontConfigSpec.kt b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt index 401502ee..63e660a2 100644 --- a/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt +++ b/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt @@ -26,23 +26,6 @@ import com.margelo.nitro.core.HybridObject "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName" ) abstract class HybridRiveFontConfigSpec: 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 RiveFontConfig]" - } - // Properties @@ -79,7 +62,21 @@ abstract class HybridRiveFontConfigSpec: HybridObject() { @Keep abstract fun clearFallbackFonts(): Promise - private external fun initHybrid(): HybridData + // Default implementation of `HybridObject.toString()` + override fun toString(): String { + return "[HybridObject RiveFontConfig]" + } + + // C++ backing class + @DoNotStrip + @Keep + protected open class CxxPart(javaPart: HybridRiveFontConfigSpec): HybridObject.CxxPart(javaPart) { + // C++ JHybridRiveFontConfigSpec::CxxPart::initHybrid(...) + external override fun initHybrid(): HybridData + } + override fun createCxxPart(): CxxPart { + return CxxPart(this) + } companion object { protected const val TAG = "HybridRiveFontConfigSpec" 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/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 5bd9eb58..b2205fe9 100644 --- a/nitrogen/generated/android/riveOnLoad.cpp +++ b/nitrogen/generated/android/riveOnLoad.cpp @@ -48,91 +48,131 @@ namespace margelo::nitro::rive { int initialize(JavaVM* vm) { + return facebook::jni::initialize(vm, []() { + ::margelo::nitro::rive::registerAllNatives(); + }); +} + +struct JHybridRiveFontConfigSpecImpl: public jni::JavaClass { + static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridRiveFontConfig;"; + static std::shared_ptr create() { + static auto constructorFn = javaClassStatic()->getConstructor(); + jni::local_ref javaPart = javaClassStatic()->newObject(constructorFn); + return javaPart->getJHybridRiveFontConfigSpec(); + } +}; +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::JHybridRiveFileSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveFileFactorySpec::registerNatives(); - margelo::nitro::rive::JHybridFallbackFontSpec::registerNatives(); - margelo::nitro::rive::JHybridRiveFontConfigSpec::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::JHybridRiveFileSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveFileFactorySpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridFallbackFontSpec::CxxPart::registerNatives(); + margelo::nitro::rive::JHybridRiveFontConfigSpec::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( - "RiveFontConfig", - []() -> std::shared_ptr { - static DefaultConstructableObject object("com/margelo/nitro/rive/HybridRiveFontConfig"); - 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( + "RiveFontConfig", + []() -> std::shared_ptr { + return JHybridRiveFontConfigSpecImpl::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 6ccaab64..66dd7c81 100644 --- a/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +++ b/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp @@ -195,7 +195,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 @@ -222,7 +222,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 @@ -237,7 +237,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 @@ -252,7 +252,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 @@ -279,7 +279,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 @@ -319,7 +319,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 @@ -440,7 +440,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 @@ -673,7 +673,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 @@ -688,7 +688,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 @@ -703,7 +703,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 @@ -765,7 +765,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 @@ -836,7 +836,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 @@ -911,7 +911,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 @@ -1032,7 +1032,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 @@ -1062,7 +1062,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 @@ -1092,7 +1092,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 @@ -1122,7 +1122,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 @@ -1152,7 +1152,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 @@ -1182,7 +1182,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 @@ -1212,7 +1212,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 @@ -1242,7 +1242,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 @@ -1272,7 +1272,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>> @@ -1421,7 +1421,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_HybridFallbackFontSpec_.swift b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.swift index b7dc1138..4c288dd0 100644 --- a/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.swift +++ b/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.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/HybridFallbackFontSpec.swift b/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift index 85663357..ac4a45fc 100644 --- a/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift +++ b/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridFallbackFontSpec`` diff --git a/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift index 9376705e..95c36ad4 100644 --- a/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridFallbackFontSpec_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/HybridRiveFontConfigSpec.swift b/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift index e6af995c..eacbf1c9 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift @@ -5,7 +5,6 @@ /// Copyright © Marc Rousavy @ Margelo /// -import Foundation import NitroModules /// See ``HybridRiveFontConfigSpec`` diff --git a/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift b/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift index c4d6b44a..328a8ea8 100644 --- a/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift +++ b/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_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/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 e5a45b35..7f369baf 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 From a4edac3f7c1dbc339b7d1cfd2f2f884e493bd923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Fri, 13 Mar 2026 13:37:07 +0100 Subject: [PATCH 2/3] chore: add nitrogen postprocess to make HybridRiveViewManager open Nitro 0.35 generates final ViewManager classes, preventing onDropViewInstance override needed for view lifecycle cleanup. Added a postprocess script to patch the generated class as open. --- example/assets/rive/counter.riv | Bin 0 -> 877252 bytes expo-example/app/[pageId].tsx | 1 + expo-example/app/_layout.tsx | 1 + expo-example/app/index.tsx | 1 + expo-example/components/ui/icon-symbol.tsx | 1 + .../nitro/rive/views/HybridRiveViewManager.kt | 2 +- package.json | 2 +- scripts/nitrogen-postprocess.ts | 31 ++++++++++++++++++ 8 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 example/assets/rive/counter.riv create mode 100644 scripts/nitrogen-postprocess.ts diff --git a/example/assets/rive/counter.riv b/example/assets/rive/counter.riv new file mode 100644 index 0000000000000000000000000000000000000000..0093a1e905f369c64b401f462acad1bfa2da373b GIT binary patch literal 877252 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

oqtE*k~7d?fOT^-7bg#;$%11?cN5Y*+YHz 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%0DaH^MIxR2nV4W=;p=2qmM>=Fbv5 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°y#+oYW;%H=7be66@s`KvBpmZ+g4X6Z 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

1<$z(e#2sZ;0_Y>NQY`SvXsIM= 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≥^wd?j)`)B_A&lmoASAb(# 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

i}U0&~qH~u?+Pf{{4PEk{p$ik~tin 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 literal 0 HcmV?d00001 diff --git a/expo-example/app/[pageId].tsx b/expo-example/app/[pageId].tsx index 28745cbb..a82a955a 100644 --- a/expo-example/app/[pageId].tsx +++ b/expo-example/app/[pageId].tsx @@ -1,3 +1,4 @@ +import '@example/polyfills'; import { useLocalSearchParams, Stack } from 'expo-router'; import { PagesList, type PageItem } from '@example/PagesList'; import { View, Text, StyleSheet } from 'react-native'; diff --git a/expo-example/app/_layout.tsx b/expo-example/app/_layout.tsx index d10c2b6e..19d79c9e 100644 --- a/expo-example/app/_layout.tsx +++ b/expo-example/app/_layout.tsx @@ -1,3 +1,4 @@ +import '@example/polyfills'; import { DarkTheme, DefaultTheme, diff --git a/expo-example/app/index.tsx b/expo-example/app/index.tsx index 21f89c81..b0060c94 100644 --- a/expo-example/app/index.tsx +++ b/expo-example/app/index.tsx @@ -1,3 +1,4 @@ +import '@example/polyfills'; import { useEffect, useState } from 'react'; import { StyleSheet, TouchableOpacity } from 'react-native'; import { useRouter } from 'expo-router'; diff --git a/expo-example/components/ui/icon-symbol.tsx b/expo-example/components/ui/icon-symbol.tsx index c556a66d..fe7411a6 100644 --- a/expo-example/components/ui/icon-symbol.tsx +++ b/expo-example/components/ui/icon-symbol.tsx @@ -25,6 +25,7 @@ const MAPPING = { 'paperplane.fill': 'send', 'chevron.left.forwardslash.chevron.right': 'code', 'chevron.right': 'chevron-right', + 'wrench.fill': 'build', } as IconMapping; /** 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 575244ab..46fc7230 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. */ -public class HybridRiveViewManager: SimpleViewManager() { +public open class HybridRiveViewManager: SimpleViewManager() { init { if (RecyclableView::class.java.isAssignableFrom(HybridRiveView::class.java)) { // Enable view recycling diff --git a/package.json b/package.json index 7f369baf..a7ef86b9 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "lint": "eslint \"**/*.{js,ts,tsx}\"", "clean": "del-cli android/build example/android/build example/android/app/build example/ios/build lib", "prepare": "npx react-native-builder-bob@^0.40.0 build", - "nitrogen": "nitrogen", + "nitrogen": "nitrogen && npx tsx scripts/nitrogen-postprocess.ts", "release": "release-it", "dev:ios": "cd example && xed ios", "dev:android": "cd example && open -a \"/Applications/Android Studio.app\" ./android", diff --git a/scripts/nitrogen-postprocess.ts b/scripts/nitrogen-postprocess.ts new file mode 100644 index 00000000..280b7fc7 --- /dev/null +++ b/scripts/nitrogen-postprocess.ts @@ -0,0 +1,31 @@ +import { readFileSync, writeFileSync, existsSync } from 'fs'; +import { join } from 'path'; + +const ROOT = join(__dirname, '..'); +const MANAGER_FILE = join( + ROOT, + 'nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt' +); + +function makeHybridRiveViewManagerOpen() { + if (!existsSync(MANAGER_FILE)) { + console.warn('HybridRiveViewManager.kt not found, skipping'); + return; + } + + const content = readFileSync(MANAGER_FILE, 'utf-8'); + const updated = content.replace( + 'public class HybridRiveViewManager', + 'public open class HybridRiveViewManager' + ); + + if (content === updated) { + console.log('HybridRiveViewManager is already open'); + return; + } + + writeFileSync(MANAGER_FILE, updated); + console.log('Made HybridRiveViewManager open'); +} + +makeHybridRiveViewManagerOpen(); From 866a0796155b4353443960600135c49dfd38812e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mikl=C3=B3s=20Fazekas?= Date: Fri, 13 Mar 2026 15:33:04 +0100 Subject: [PATCH 3/3] test: add navigation lifecycle harness test Verifies RiveView preserves state after screen detach/reattach using react-native-screens ScreenContainer. --- .../navigation-lifecycle.harness.tsx | 141 ++++++++++++++++++ example/metro.config.js | 13 +- example/metro.helpers.js | 49 +++++- example/package.json | 1 + expo-example/metro.config.js | 11 +- yarn.lock | 14 ++ 6 files changed, 224 insertions(+), 5 deletions(-) create mode 100644 example/__tests__/navigation-lifecycle.harness.tsx diff --git a/example/__tests__/navigation-lifecycle.harness.tsx b/example/__tests__/navigation-lifecycle.harness.tsx new file mode 100644 index 00000000..78a0d1a6 --- /dev/null +++ b/example/__tests__/navigation-lifecycle.harness.tsx @@ -0,0 +1,141 @@ +import { + describe, + it, + expect, + render, + waitFor, + cleanup, +} from 'react-native-harness'; +import { useEffect } from 'react'; +import { ScreenContainer, Screen } from 'react-native-screens'; +import { + RiveView, + RiveFileFactory, + Fit, + type RiveFile, + type RiveViewRef, +} from '@rive-app/react-native'; +import type { ViewModelInstance } from '@rive-app/react-native'; + +const QUICK_START = require('../assets/rive/quick_start.riv'); + +const SCREEN_INACTIVE = 0 as const; +const SCREEN_ACTIVE = 2 as const; + +function expectDefined(value: T): asserts value is NonNullable { + expect(value).toBeDefined(); +} + +type TestContext = { + ref: RiveViewRef | null; + error: string | null; +}; + +function ScreenWithRive({ + file, + instance, + context, + activityState, +}: { + file: RiveFile; + instance: ViewModelInstance; + context: TestContext; + activityState: typeof SCREEN_INACTIVE | typeof SCREEN_ACTIVE; +}) { + useEffect(() => { + return () => { + context.ref = null; + }; + }, [context]); + + return ( + + + { + context.ref = ref; + }, + }} + style={{ flex: 1 }} + file={file} + autoPlay={false} + dataBind={instance} + fit={Fit.Contain} + stateMachineName="State Machine 1" + onError={(e) => { + context.error = e.message; + }} + /> + + + ); +} + +describe('navigation lifecycle (PR #46)', () => { + it('RiveView preserves state after screen detach/reattach', async () => { + const file = await RiveFileFactory.fromSource(QUICK_START, undefined); + const vm = file.defaultArtboardViewModel(); + expectDefined(vm); + const instance = vm.createDefaultInstance(); + expectDefined(instance); + + const context: TestContext = { ref: null, error: null }; + + const { rerender } = await render( + + ); + + await waitFor( + () => { + expect(context.ref).not.toBeNull(); + }, + { timeout: 5000 } + ); + await context.ref!.awaitViewReady(); + + // Set health to 75 via the native view's VMI + const boundVmi = context.ref!.getViewModelInstance(); + expectDefined(boundVmi); + const health = boundVmi.numberProperty('health'); + expectDefined(health); + health.value = 75; + + // Detach screen (simulates navigating away — triggers onDetachedFromWindow) + await rerender( + + ); + await new Promise((r) => setTimeout(r, 300)); + + // Reattach screen (simulates navigating back) + await rerender( + + ); + await new Promise((r) => setTimeout(r, 300)); + + // Query the VMI from the native view after reattach + expect(context.error).toBeNull(); + const reattachedVmi = context.ref!.getViewModelInstance(); + expectDefined(reattachedVmi); + const reattachedHealth = reattachedVmi.numberProperty('health'); + expectDefined(reattachedHealth); + expect(reattachedHealth.value).toBe(75); + + cleanup(); + }); +}); diff --git a/example/metro.config.js b/example/metro.config.js index 016b1db6..0c7e9f2c 100644 --- a/example/metro.config.js +++ b/example/metro.config.js @@ -2,7 +2,10 @@ const path = require('path'); const { getDefaultConfig } = require('@react-native/metro-config'); const { getConfig } = require('react-native-builder-bob/metro-config'); const { withRnHarness } = require('react-native-harness/metro'); -const { withSingleReactNative } = require('./metro.helpers'); +const { + withSingleReactNative, + withBlockedSiblingDeps, +} = require('./metro.helpers'); const root = path.resolve(__dirname, '..'); @@ -21,4 +24,10 @@ const finalConfig = getConfig(config, { project: __dirname, }); -module.exports = withRnHarness(withSingleReactNative(finalConfig, __dirname)); +const expoExampleDir = path.resolve(root, 'expo-example'); +module.exports = withRnHarness( + withSingleReactNative( + withBlockedSiblingDeps(finalConfig, __dirname, expoExampleDir), + __dirname + ) +); diff --git a/example/metro.helpers.js b/example/metro.helpers.js index 18e91e2e..b2811f9b 100644 --- a/example/metro.helpers.js +++ b/example/metro.helpers.js @@ -53,4 +53,51 @@ function withSingleReactNative(config, projectDir) { }; } -module.exports = { withSingleReactNative }; +/** + * Blocks a sibling workspace's node_modules for any dependencies shared between the two. + * Prevents duplicate native module registration when builder-bob watches the monorepo root. + * + * @param {import('metro-config').MetroConfig} config - Metro configuration + * @param {string} projectDir - This project's directory + * @param {string} siblingDir - The sibling workspace's directory + * @returns {import('metro-config').MetroConfig} + */ +function withBlockedSiblingDeps(config, projectDir, siblingDir) { + const myPkg = require(path.resolve(projectDir, 'package.json')); + const siblingPkg = require(path.resolve(siblingDir, 'package.json')); + + const myDeps = new Set([ + ...Object.keys(myPkg.dependencies || {}), + ...Object.keys(myPkg.devDependencies || {}), + ]); + const siblingDeps = [ + ...Object.keys(siblingPkg.dependencies || {}), + ...Object.keys(siblingPkg.devDependencies || {}), + ]; + + const shared = siblingDeps.filter((dep) => myDeps.has(dep)); + if (shared.length === 0) return config; + + const patterns = shared.map((dep) => { + const escaped = path + .resolve(siblingDir, 'node_modules', dep) + .replace(/[/\\]/g, '[/\\\\]'); + return new RegExp(escaped + '[/\\\\].*$'); + }); + + const existing = config.resolver?.blockList; + const blockList = [ + ...(existing ? (Array.isArray(existing) ? existing : [existing]) : []), + ...patterns, + ]; + + return { + ...config, + resolver: { + ...config.resolver, + blockList, + }, + }; +} + +module.exports = { withSingleReactNative, withBlockedSiblingDeps }; diff --git a/example/package.json b/example/package.json index 39c5981b..733032b4 100644 --- a/example/package.json +++ b/example/package.json @@ -24,6 +24,7 @@ "react-native-nitro-modules": "0.35.0", "react-native-reanimated": "4.1.5", "react-native-safe-area-context": "^5.4.0", + "react-native-screens": "~4.18.0", "react-native-worklets": "0.6.1" }, "devDependencies": { diff --git a/expo-example/metro.config.js b/expo-example/metro.config.js index 0870b384..b85a53b4 100644 --- a/expo-example/metro.config.js +++ b/expo-example/metro.config.js @@ -2,7 +2,10 @@ const { getDefaultConfig } = require('expo/metro-config'); const { getConfig } = require('react-native-builder-bob/metro-config'); const path = require('path'); -const { withSingleReactNative } = require('../example/metro.helpers'); +const { + withSingleReactNative, + withBlockedSiblingDeps, +} = require('../example/metro.helpers'); const root = path.resolve(__dirname, '..'); @@ -60,4 +63,8 @@ const configWithAlias = { }, }; -module.exports = withSingleReactNative(configWithAlias, __dirname); +const exampleDir = path.resolve(root, 'example'); +module.exports = withSingleReactNative( + withBlockedSiblingDeps(configWithAlias, __dirname, exampleDir), + __dirname +); diff --git a/yarn.lock b/yarn.lock index eac83233..184a33a7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -14458,6 +14458,7 @@ __metadata: react-native-nitro-modules: 0.35.0 react-native-reanimated: 4.1.5 react-native-safe-area-context: ^5.4.0 + react-native-screens: ~4.18.0 react-native-worklets: 0.6.1 languageName: unknown linkType: soft @@ -14486,6 +14487,19 @@ __metadata: languageName: node linkType: hard +"react-native-screens@npm:~4.18.0": + version: 4.18.0 + resolution: "react-native-screens@npm:4.18.0" + dependencies: + react-freeze: ^1.0.0 + warn-once: ^0.1.0 + peerDependencies: + react: "*" + react-native: "*" + checksum: b7942efe7bf316ad66aabf6e3b8b999268d3b88b3d23affb0f90f627d8dd980172f79b48abf476d10c3466ba5123240ee3f18f8d0ff7db5b79b9772cb520afa0 + languageName: node + linkType: hard + "react-native-web@npm:~0.21.0": version: 0.21.2 resolution: "react-native-web@npm:0.21.2"