@rive-app/react-native 0.2.8 → 0.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (140) hide show
  1. package/ios/DataSource.swift +1 -1
  2. package/ios/HybridRiveFileFactory.swift +1 -1
  3. package/ios/HybridRiveImageFactory.swift +1 -1
  4. package/lib/typescript/scripts/nitrogen-postprocess.d.ts +2 -0
  5. package/lib/typescript/scripts/nitrogen-postprocess.d.ts.map +1 -0
  6. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.cpp +19 -25
  7. package/nitrogen/generated/android/c++/JHybridBindableArtboardSpec.hpp +19 -22
  8. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.cpp +18 -24
  9. package/nitrogen/generated/android/c++/JHybridFallbackFontSpec.hpp +19 -22
  10. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.cpp +30 -36
  11. package/nitrogen/generated/android/c++/JHybridRiveFileFactorySpec.hpp +19 -22
  12. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.cpp +30 -36
  13. package/nitrogen/generated/android/c++/JHybridRiveFileSpec.hpp +19 -22
  14. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.cpp +34 -40
  15. package/nitrogen/generated/android/c++/JHybridRiveFontConfigSpec.hpp +19 -22
  16. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.cpp +27 -33
  17. package/nitrogen/generated/android/c++/JHybridRiveImageFactorySpec.hpp +19 -22
  18. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.cpp +19 -25
  19. package/nitrogen/generated/android/c++/JHybridRiveImageSpec.hpp +19 -22
  20. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.cpp +21 -27
  21. package/nitrogen/generated/android/c++/JHybridRiveRuntimeSpec.hpp +19 -22
  22. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.cpp +54 -60
  23. package/nitrogen/generated/android/c++/JHybridRiveViewSpec.hpp +19 -22
  24. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.cpp +19 -25
  25. package/nitrogen/generated/android/c++/JHybridViewModelArtboardPropertySpec.hpp +20 -22
  26. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.cpp +22 -28
  27. package/nitrogen/generated/android/c++/JHybridViewModelBooleanPropertySpec.hpp +20 -22
  28. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.cpp +22 -28
  29. package/nitrogen/generated/android/c++/JHybridViewModelColorPropertySpec.hpp +20 -22
  30. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.cpp +22 -28
  31. package/nitrogen/generated/android/c++/JHybridViewModelEnumPropertySpec.hpp +20 -22
  32. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.cpp +21 -27
  33. package/nitrogen/generated/android/c++/JHybridViewModelImagePropertySpec.hpp +20 -22
  34. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.cpp +40 -46
  35. package/nitrogen/generated/android/c++/JHybridViewModelInstanceSpec.hpp +19 -22
  36. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.cpp +28 -34
  37. package/nitrogen/generated/android/c++/JHybridViewModelListPropertySpec.hpp +20 -22
  38. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.cpp +22 -28
  39. package/nitrogen/generated/android/c++/JHybridViewModelNumberPropertySpec.hpp +20 -22
  40. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.cpp +18 -24
  41. package/nitrogen/generated/android/c++/JHybridViewModelPropertySpec.hpp +19 -22
  42. package/nitrogen/generated/android/c++/JHybridViewModelSpec.cpp +29 -35
  43. package/nitrogen/generated/android/c++/JHybridViewModelSpec.hpp +19 -22
  44. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.cpp +22 -28
  45. package/nitrogen/generated/android/c++/JHybridViewModelStringPropertySpec.hpp +20 -22
  46. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.cpp +21 -27
  47. package/nitrogen/generated/android/c++/JHybridViewModelTriggerPropertySpec.hpp +20 -22
  48. package/nitrogen/generated/android/c++/JResolvedReferencedAsset.hpp +4 -4
  49. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.cpp +1 -1
  50. package/nitrogen/generated/android/c++/JVariant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.hpp +4 -4
  51. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.cpp +40 -40
  52. package/nitrogen/generated/android/c++/views/JHybridRiveViewStateUpdater.hpp +3 -3
  53. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/EventPropertiesOutput.kt +0 -7
  54. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridBindableArtboardSpec.kt +15 -18
  55. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridFallbackFontSpec.kt +14 -17
  56. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileFactorySpec.kt +15 -18
  57. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFileSpec.kt +15 -18
  58. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveFontConfigSpec.kt +15 -18
  59. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageFactorySpec.kt +15 -18
  60. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveImageSpec.kt +15 -18
  61. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveRuntimeSpec.kt +15 -18
  62. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridRiveViewSpec.kt +16 -18
  63. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelArtboardPropertySpec.kt +14 -17
  64. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelBooleanPropertySpec.kt +15 -18
  65. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelColorPropertySpec.kt +15 -18
  66. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelEnumPropertySpec.kt +15 -18
  67. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelImagePropertySpec.kt +15 -18
  68. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelInstanceSpec.kt +15 -18
  69. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelListPropertySpec.kt +15 -18
  70. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelNumberPropertySpec.kt +15 -18
  71. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelPropertySpec.kt +14 -17
  72. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelSpec.kt +15 -18
  73. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelStringPropertySpec.kt +15 -18
  74. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/HybridViewModelTriggerPropertySpec.kt +15 -18
  75. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/Variant_HybridViewModelInstanceSpec_DataBindMode_DataBindByName.kt +0 -7
  76. package/nitrogen/generated/android/kotlin/com/margelo/nitro/rive/views/HybridRiveViewManager.kt +1 -1
  77. package/nitrogen/generated/android/riveOnLoad.cpp +121 -81
  78. package/nitrogen/generated/android/riveOnLoad.hpp +13 -4
  79. package/nitrogen/generated/ios/RNRive-Swift-Cxx-Bridge.hpp +23 -23
  80. package/nitrogen/generated/ios/swift/ArtboardBy.swift +8 -2
  81. package/nitrogen/generated/ios/swift/DataBindByName.swift +0 -1
  82. package/nitrogen/generated/ios/swift/Func_void.swift +0 -1
  83. package/nitrogen/generated/ios/swift/Func_void_RiveError.swift +0 -1
  84. package/nitrogen/generated/ios/swift/Func_void_UnifiedRiveEvent.swift +0 -1
  85. package/nitrogen/generated/ios/swift/Func_void_bool.swift +0 -1
  86. package/nitrogen/generated/ios/swift/Func_void_double.swift +0 -1
  87. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +0 -1
  88. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridFallbackFontSpec_.swift +0 -1
  89. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveFileSpec_.swift +0 -1
  90. package/nitrogen/generated/ios/swift/Func_void_std__shared_ptr_HybridRiveImageSpec_.swift +0 -1
  91. package/nitrogen/generated/ios/swift/Func_void_std__string.swift +0 -1
  92. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec.swift +0 -1
  93. package/nitrogen/generated/ios/swift/HybridBindableArtboardSpec_cxx.swift +0 -1
  94. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec.swift +0 -1
  95. package/nitrogen/generated/ios/swift/HybridFallbackFontSpec_cxx.swift +0 -1
  96. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec.swift +0 -1
  97. package/nitrogen/generated/ios/swift/HybridRiveFileFactorySpec_cxx.swift +0 -1
  98. package/nitrogen/generated/ios/swift/HybridRiveFileSpec.swift +0 -1
  99. package/nitrogen/generated/ios/swift/HybridRiveFileSpec_cxx.swift +0 -1
  100. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec.swift +0 -1
  101. package/nitrogen/generated/ios/swift/HybridRiveFontConfigSpec_cxx.swift +0 -1
  102. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec.swift +0 -1
  103. package/nitrogen/generated/ios/swift/HybridRiveImageFactorySpec_cxx.swift +0 -1
  104. package/nitrogen/generated/ios/swift/HybridRiveImageSpec.swift +0 -1
  105. package/nitrogen/generated/ios/swift/HybridRiveImageSpec_cxx.swift +0 -1
  106. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec.swift +0 -1
  107. package/nitrogen/generated/ios/swift/HybridRiveRuntimeSpec_cxx.swift +0 -1
  108. package/nitrogen/generated/ios/swift/HybridRiveViewSpec.swift +0 -1
  109. package/nitrogen/generated/ios/swift/HybridRiveViewSpec_cxx.swift +9 -3
  110. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec.swift +0 -1
  111. package/nitrogen/generated/ios/swift/HybridViewModelArtboardPropertySpec_cxx.swift +0 -1
  112. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec.swift +0 -1
  113. package/nitrogen/generated/ios/swift/HybridViewModelBooleanPropertySpec_cxx.swift +0 -1
  114. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec.swift +0 -1
  115. package/nitrogen/generated/ios/swift/HybridViewModelColorPropertySpec_cxx.swift +0 -1
  116. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec.swift +0 -1
  117. package/nitrogen/generated/ios/swift/HybridViewModelEnumPropertySpec_cxx.swift +0 -1
  118. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec.swift +0 -1
  119. package/nitrogen/generated/ios/swift/HybridViewModelImagePropertySpec_cxx.swift +0 -1
  120. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec.swift +0 -1
  121. package/nitrogen/generated/ios/swift/HybridViewModelInstanceSpec_cxx.swift +0 -1
  122. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec.swift +0 -1
  123. package/nitrogen/generated/ios/swift/HybridViewModelListPropertySpec_cxx.swift +0 -1
  124. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec.swift +0 -1
  125. package/nitrogen/generated/ios/swift/HybridViewModelNumberPropertySpec_cxx.swift +0 -1
  126. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec.swift +0 -1
  127. package/nitrogen/generated/ios/swift/HybridViewModelPropertySpec_cxx.swift +0 -1
  128. package/nitrogen/generated/ios/swift/HybridViewModelSpec.swift +0 -1
  129. package/nitrogen/generated/ios/swift/HybridViewModelSpec_cxx.swift +0 -1
  130. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec.swift +0 -1
  131. package/nitrogen/generated/ios/swift/HybridViewModelStringPropertySpec_cxx.swift +0 -1
  132. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec.swift +0 -1
  133. package/nitrogen/generated/ios/swift/HybridViewModelTriggerPropertySpec_cxx.swift +0 -1
  134. package/nitrogen/generated/ios/swift/ReferencedAssetsType.swift +0 -1
  135. package/nitrogen/generated/ios/swift/ResolvedReferencedAsset.swift +0 -1
  136. package/nitrogen/generated/ios/swift/RiveError.swift +0 -1
  137. package/nitrogen/generated/ios/swift/UnifiedRiveEvent.swift +8 -2
  138. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.cpp +4 -17
  139. package/nitrogen/generated/shared/c++/views/HybridRiveViewComponent.hpp +8 -5
  140. package/package.json +7 -7
@@ -16,53 +16,47 @@
16
16
 
17
17
  namespace margelo::nitro::rive {
18
18
 
19
- jni::local_ref<JHybridViewModelBooleanPropertySpec::jhybriddata> JHybridViewModelBooleanPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
20
- return makeCxxInstance(jThis);
21
- }
22
-
23
- void JHybridViewModelBooleanPropertySpec::registerNatives() {
24
- registerHybrid({
25
- makeNativeMethod("initHybrid", JHybridViewModelBooleanPropertySpec::initHybrid),
26
- });
19
+ std::shared_ptr<JHybridViewModelBooleanPropertySpec> JHybridViewModelBooleanPropertySpec::JavaPart::getJHybridViewModelBooleanPropertySpec() {
20
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
21
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelBooleanPropertySpec>(hybridObject);
22
+ if (castHybridObject == nullptr) [[unlikely]] {
23
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelBooleanPropertySpec!");
24
+ }
25
+ return castHybridObject;
27
26
  }
28
27
 
29
- size_t JHybridViewModelBooleanPropertySpec::getExternalMemorySize() noexcept {
30
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
31
- return method(_javaPart);
28
+ jni::local_ref<JHybridViewModelBooleanPropertySpec::CxxPart::jhybriddata> JHybridViewModelBooleanPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
29
+ return makeCxxInstance(jThis);
32
30
  }
33
31
 
34
- bool JHybridViewModelBooleanPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
35
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelBooleanPropertySpec>(other)) {
36
- return _javaPart == otherCast->_javaPart;
32
+ std::shared_ptr<JHybridObject> JHybridViewModelBooleanPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
33
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelBooleanPropertySpec::JavaPart>(javaPart);
34
+ if (castJavaPart == nullptr) [[unlikely]] {
35
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelBooleanPropertySpec::JavaPart!");
37
36
  }
38
- return false;
39
- }
40
-
41
- void JHybridViewModelBooleanPropertySpec::dispose() noexcept {
42
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
43
- method(_javaPart);
37
+ return std::make_shared<JHybridViewModelBooleanPropertySpec>(castJavaPart);
44
38
  }
45
39
 
46
- std::string JHybridViewModelBooleanPropertySpec::toString() {
47
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
48
- auto javaString = method(_javaPart);
49
- return javaString->toStdString();
40
+ void JHybridViewModelBooleanPropertySpec::CxxPart::registerNatives() {
41
+ registerHybrid({
42
+ makeNativeMethod("initHybrid", JHybridViewModelBooleanPropertySpec::CxxPart::initHybrid),
43
+ });
50
44
  }
51
45
 
52
46
  // Properties
53
47
  bool JHybridViewModelBooleanPropertySpec::getValue() {
54
- static const auto method = javaClassStatic()->getMethod<jboolean()>("getValue");
48
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("getValue");
55
49
  auto __result = method(_javaPart);
56
50
  return static_cast<bool>(__result);
57
51
  }
58
52
  void JHybridViewModelBooleanPropertySpec::setValue(bool value) {
59
- static const auto method = javaClassStatic()->getMethod<void(jboolean /* value */)>("setValue");
53
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* value */)>("setValue");
60
54
  method(_javaPart, value);
61
55
  }
62
56
 
63
57
  // Methods
64
58
  std::function<void()> JHybridViewModelBooleanPropertySpec::addListener(const std::function<void(bool /* value */)>& onChanged) {
65
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_bool::javaobject> /* onChanged */)>("addListener_cxx");
59
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_bool::javaobject> /* onChanged */)>("addListener_cxx");
66
60
  auto __result = method(_javaPart, JFunc_void_bool_cxx::fromCpp(onChanged));
67
61
  return [&]() -> std::function<void()> {
68
62
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -75,7 +69,7 @@ namespace margelo::nitro::rive {
75
69
  }();
76
70
  }
77
71
  void JHybridViewModelBooleanPropertySpec::removeListeners() {
78
- static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeListeners");
79
73
  method(_javaPart);
80
74
  }
81
75
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelBooleanPropertySpec: public jni::HybridClass<JHybridViewModelBooleanPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelBooleanPropertySpec {
22
+ class JHybridViewModelBooleanPropertySpec: public virtual HybridViewModelBooleanPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec;";
26
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
27
- static void registerNatives();
28
-
29
- protected:
30
- // C++ constructor (called from Java via `initHybrid()`)
31
- explicit JHybridViewModelBooleanPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelBooleanPropertySpec::TAG),
33
- HybridBase(jThis),
34
- _javaPart(jni::make_global(jThis)) {}
24
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridViewModelPropertySpec::JavaPart> {
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelBooleanPropertySpec> getJHybridViewModelBooleanPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelBooleanPropertySpec$CxxPart;";
30
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
31
+ static void registerNatives();
32
+ using HybridBase::HybridBase;
33
+ protected:
34
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
35
+ };
35
36
 
36
37
  public:
38
+ explicit JHybridViewModelBooleanPropertySpec(const jni::local_ref<JHybridViewModelBooleanPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelBooleanPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelBooleanPropertySpec() override {
38
44
  // Hermes GC can destroy JS objects on a non-JNI Thread.
39
45
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
40
46
  }
41
47
 
42
48
  public:
43
- size_t getExternalMemorySize() noexcept override;
44
- bool equals(const std::shared_ptr<HybridObject>& other) override;
45
- void dispose() noexcept override;
46
- std::string toString() override;
47
-
48
- public:
49
- inline const jni::global_ref<JHybridViewModelBooleanPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelBooleanPropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -61,9 +61,7 @@ namespace margelo::nitro::rive {
61
61
  void removeListeners() override;
62
62
 
63
63
  private:
64
- friend HybridBase;
65
- using HybridBase::HybridBase;
66
- jni::global_ref<JHybridViewModelBooleanPropertySpec::javaobject> _javaPart;
64
+ jni::global_ref<JHybridViewModelBooleanPropertySpec::JavaPart> _javaPart;
67
65
  };
68
66
 
69
67
  } // namespace margelo::nitro::rive
@@ -16,53 +16,47 @@
16
16
 
17
17
  namespace margelo::nitro::rive {
18
18
 
19
- jni::local_ref<JHybridViewModelColorPropertySpec::jhybriddata> JHybridViewModelColorPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
20
- return makeCxxInstance(jThis);
21
- }
22
-
23
- void JHybridViewModelColorPropertySpec::registerNatives() {
24
- registerHybrid({
25
- makeNativeMethod("initHybrid", JHybridViewModelColorPropertySpec::initHybrid),
26
- });
19
+ std::shared_ptr<JHybridViewModelColorPropertySpec> JHybridViewModelColorPropertySpec::JavaPart::getJHybridViewModelColorPropertySpec() {
20
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
21
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelColorPropertySpec>(hybridObject);
22
+ if (castHybridObject == nullptr) [[unlikely]] {
23
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelColorPropertySpec!");
24
+ }
25
+ return castHybridObject;
27
26
  }
28
27
 
29
- size_t JHybridViewModelColorPropertySpec::getExternalMemorySize() noexcept {
30
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
31
- return method(_javaPart);
28
+ jni::local_ref<JHybridViewModelColorPropertySpec::CxxPart::jhybriddata> JHybridViewModelColorPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
29
+ return makeCxxInstance(jThis);
32
30
  }
33
31
 
34
- bool JHybridViewModelColorPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
35
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelColorPropertySpec>(other)) {
36
- return _javaPart == otherCast->_javaPart;
32
+ std::shared_ptr<JHybridObject> JHybridViewModelColorPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
33
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelColorPropertySpec::JavaPart>(javaPart);
34
+ if (castJavaPart == nullptr) [[unlikely]] {
35
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelColorPropertySpec::JavaPart!");
37
36
  }
38
- return false;
39
- }
40
-
41
- void JHybridViewModelColorPropertySpec::dispose() noexcept {
42
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
43
- method(_javaPart);
37
+ return std::make_shared<JHybridViewModelColorPropertySpec>(castJavaPart);
44
38
  }
45
39
 
46
- std::string JHybridViewModelColorPropertySpec::toString() {
47
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
48
- auto javaString = method(_javaPart);
49
- return javaString->toStdString();
40
+ void JHybridViewModelColorPropertySpec::CxxPart::registerNatives() {
41
+ registerHybrid({
42
+ makeNativeMethod("initHybrid", JHybridViewModelColorPropertySpec::CxxPart::initHybrid),
43
+ });
50
44
  }
51
45
 
52
46
  // Properties
53
47
  double JHybridViewModelColorPropertySpec::getValue() {
54
- static const auto method = javaClassStatic()->getMethod<double()>("getValue");
48
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getValue");
55
49
  auto __result = method(_javaPart);
56
50
  return __result;
57
51
  }
58
52
  void JHybridViewModelColorPropertySpec::setValue(double value) {
59
- static const auto method = javaClassStatic()->getMethod<void(double /* value */)>("setValue");
53
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* value */)>("setValue");
60
54
  method(_javaPart, value);
61
55
  }
62
56
 
63
57
  // Methods
64
58
  std::function<void()> JHybridViewModelColorPropertySpec::addListener(const std::function<void(double /* value */)>& onChanged) {
65
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_double::javaobject> /* onChanged */)>("addListener_cxx");
59
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_double::javaobject> /* onChanged */)>("addListener_cxx");
66
60
  auto __result = method(_javaPart, JFunc_void_double_cxx::fromCpp(onChanged));
67
61
  return [&]() -> std::function<void()> {
68
62
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -75,7 +69,7 @@ namespace margelo::nitro::rive {
75
69
  }();
76
70
  }
77
71
  void JHybridViewModelColorPropertySpec::removeListeners() {
78
- static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeListeners");
79
73
  method(_javaPart);
80
74
  }
81
75
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelColorPropertySpec: public jni::HybridClass<JHybridViewModelColorPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelColorPropertySpec {
22
+ class JHybridViewModelColorPropertySpec: public virtual HybridViewModelColorPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec;";
26
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
27
- static void registerNatives();
28
-
29
- protected:
30
- // C++ constructor (called from Java via `initHybrid()`)
31
- explicit JHybridViewModelColorPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelColorPropertySpec::TAG),
33
- HybridBase(jThis),
34
- _javaPart(jni::make_global(jThis)) {}
24
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridViewModelPropertySpec::JavaPart> {
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelColorPropertySpec> getJHybridViewModelColorPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelColorPropertySpec$CxxPart;";
30
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
31
+ static void registerNatives();
32
+ using HybridBase::HybridBase;
33
+ protected:
34
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
35
+ };
35
36
 
36
37
  public:
38
+ explicit JHybridViewModelColorPropertySpec(const jni::local_ref<JHybridViewModelColorPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelColorPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelColorPropertySpec() override {
38
44
  // Hermes GC can destroy JS objects on a non-JNI Thread.
39
45
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
40
46
  }
41
47
 
42
48
  public:
43
- size_t getExternalMemorySize() noexcept override;
44
- bool equals(const std::shared_ptr<HybridObject>& other) override;
45
- void dispose() noexcept override;
46
- std::string toString() override;
47
-
48
- public:
49
- inline const jni::global_ref<JHybridViewModelColorPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelColorPropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -61,9 +61,7 @@ namespace margelo::nitro::rive {
61
61
  void removeListeners() override;
62
62
 
63
63
  private:
64
- friend HybridBase;
65
- using HybridBase::HybridBase;
66
- jni::global_ref<JHybridViewModelColorPropertySpec::javaobject> _javaPart;
64
+ jni::global_ref<JHybridViewModelColorPropertySpec::JavaPart> _javaPart;
67
65
  };
68
66
 
69
67
  } // namespace margelo::nitro::rive
@@ -17,53 +17,47 @@
17
17
 
18
18
  namespace margelo::nitro::rive {
19
19
 
20
- jni::local_ref<JHybridViewModelEnumPropertySpec::jhybriddata> JHybridViewModelEnumPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
21
- return makeCxxInstance(jThis);
22
- }
23
-
24
- void JHybridViewModelEnumPropertySpec::registerNatives() {
25
- registerHybrid({
26
- makeNativeMethod("initHybrid", JHybridViewModelEnumPropertySpec::initHybrid),
27
- });
20
+ std::shared_ptr<JHybridViewModelEnumPropertySpec> JHybridViewModelEnumPropertySpec::JavaPart::getJHybridViewModelEnumPropertySpec() {
21
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
22
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelEnumPropertySpec>(hybridObject);
23
+ if (castHybridObject == nullptr) [[unlikely]] {
24
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelEnumPropertySpec!");
25
+ }
26
+ return castHybridObject;
28
27
  }
29
28
 
30
- size_t JHybridViewModelEnumPropertySpec::getExternalMemorySize() noexcept {
31
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
32
- return method(_javaPart);
29
+ jni::local_ref<JHybridViewModelEnumPropertySpec::CxxPart::jhybriddata> JHybridViewModelEnumPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
30
+ return makeCxxInstance(jThis);
33
31
  }
34
32
 
35
- bool JHybridViewModelEnumPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
36
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelEnumPropertySpec>(other)) {
37
- return _javaPart == otherCast->_javaPart;
33
+ std::shared_ptr<JHybridObject> JHybridViewModelEnumPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
34
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelEnumPropertySpec::JavaPart>(javaPart);
35
+ if (castJavaPart == nullptr) [[unlikely]] {
36
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelEnumPropertySpec::JavaPart!");
38
37
  }
39
- return false;
40
- }
41
-
42
- void JHybridViewModelEnumPropertySpec::dispose() noexcept {
43
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
44
- method(_javaPart);
38
+ return std::make_shared<JHybridViewModelEnumPropertySpec>(castJavaPart);
45
39
  }
46
40
 
47
- std::string JHybridViewModelEnumPropertySpec::toString() {
48
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
49
- auto javaString = method(_javaPart);
50
- return javaString->toStdString();
41
+ void JHybridViewModelEnumPropertySpec::CxxPart::registerNatives() {
42
+ registerHybrid({
43
+ makeNativeMethod("initHybrid", JHybridViewModelEnumPropertySpec::CxxPart::initHybrid),
44
+ });
51
45
  }
52
46
 
53
47
  // Properties
54
48
  std::string JHybridViewModelEnumPropertySpec::getValue() {
55
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getValue");
49
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getValue");
56
50
  auto __result = method(_javaPart);
57
51
  return __result->toStdString();
58
52
  }
59
53
  void JHybridViewModelEnumPropertySpec::setValue(const std::string& value) {
60
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* value */)>("setValue");
54
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* value */)>("setValue");
61
55
  method(_javaPart, jni::make_jstring(value));
62
56
  }
63
57
 
64
58
  // Methods
65
59
  std::function<void()> JHybridViewModelEnumPropertySpec::addListener(const std::function<void(const std::string& /* value */)>& onChanged) {
66
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_std__string::javaobject> /* onChanged */)>("addListener_cxx");
60
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void_std__string::javaobject> /* onChanged */)>("addListener_cxx");
67
61
  auto __result = method(_javaPart, JFunc_void_std__string_cxx::fromCpp(onChanged));
68
62
  return [&]() -> std::function<void()> {
69
63
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -76,7 +70,7 @@ namespace margelo::nitro::rive {
76
70
  }();
77
71
  }
78
72
  void JHybridViewModelEnumPropertySpec::removeListeners() {
79
- static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeListeners");
80
74
  method(_javaPart);
81
75
  }
82
76
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelEnumPropertySpec: public jni::HybridClass<JHybridViewModelEnumPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelEnumPropertySpec {
22
+ class JHybridViewModelEnumPropertySpec: public virtual HybridViewModelEnumPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec;";
26
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
27
- static void registerNatives();
28
-
29
- protected:
30
- // C++ constructor (called from Java via `initHybrid()`)
31
- explicit JHybridViewModelEnumPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelEnumPropertySpec::TAG),
33
- HybridBase(jThis),
34
- _javaPart(jni::make_global(jThis)) {}
24
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridViewModelPropertySpec::JavaPart> {
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelEnumPropertySpec> getJHybridViewModelEnumPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelEnumPropertySpec$CxxPart;";
30
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
31
+ static void registerNatives();
32
+ using HybridBase::HybridBase;
33
+ protected:
34
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
35
+ };
35
36
 
36
37
  public:
38
+ explicit JHybridViewModelEnumPropertySpec(const jni::local_ref<JHybridViewModelEnumPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelEnumPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelEnumPropertySpec() override {
38
44
  // Hermes GC can destroy JS objects on a non-JNI Thread.
39
45
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
40
46
  }
41
47
 
42
48
  public:
43
- size_t getExternalMemorySize() noexcept override;
44
- bool equals(const std::shared_ptr<HybridObject>& other) override;
45
- void dispose() noexcept override;
46
- std::string toString() override;
47
-
48
- public:
49
- inline const jni::global_ref<JHybridViewModelEnumPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelEnumPropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -61,9 +61,7 @@ namespace margelo::nitro::rive {
61
61
  void removeListeners() override;
62
62
 
63
63
  private:
64
- friend HybridBase;
65
- using HybridBase::HybridBase;
66
- jni::global_ref<JHybridViewModelEnumPropertySpec::javaobject> _javaPart;
64
+ jni::global_ref<JHybridViewModelEnumPropertySpec::JavaPart> _javaPart;
67
65
  };
68
66
 
69
67
  } // namespace margelo::nitro::rive
@@ -20,37 +20,31 @@ namespace margelo::nitro::rive { class HybridRiveImageSpec; }
20
20
 
21
21
  namespace margelo::nitro::rive {
22
22
 
23
- jni::local_ref<JHybridViewModelImagePropertySpec::jhybriddata> JHybridViewModelImagePropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
24
- return makeCxxInstance(jThis);
25
- }
26
-
27
- void JHybridViewModelImagePropertySpec::registerNatives() {
28
- registerHybrid({
29
- makeNativeMethod("initHybrid", JHybridViewModelImagePropertySpec::initHybrid),
30
- });
23
+ std::shared_ptr<JHybridViewModelImagePropertySpec> JHybridViewModelImagePropertySpec::JavaPart::getJHybridViewModelImagePropertySpec() {
24
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
25
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelImagePropertySpec>(hybridObject);
26
+ if (castHybridObject == nullptr) [[unlikely]] {
27
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelImagePropertySpec!");
28
+ }
29
+ return castHybridObject;
31
30
  }
32
31
 
33
- size_t JHybridViewModelImagePropertySpec::getExternalMemorySize() noexcept {
34
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
35
- return method(_javaPart);
32
+ jni::local_ref<JHybridViewModelImagePropertySpec::CxxPart::jhybriddata> JHybridViewModelImagePropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
33
+ return makeCxxInstance(jThis);
36
34
  }
37
35
 
38
- bool JHybridViewModelImagePropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
39
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelImagePropertySpec>(other)) {
40
- return _javaPart == otherCast->_javaPart;
36
+ std::shared_ptr<JHybridObject> JHybridViewModelImagePropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
37
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelImagePropertySpec::JavaPart>(javaPart);
38
+ if (castJavaPart == nullptr) [[unlikely]] {
39
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelImagePropertySpec::JavaPart!");
41
40
  }
42
- return false;
43
- }
44
-
45
- void JHybridViewModelImagePropertySpec::dispose() noexcept {
46
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
47
- method(_javaPart);
41
+ return std::make_shared<JHybridViewModelImagePropertySpec>(castJavaPart);
48
42
  }
49
43
 
50
- std::string JHybridViewModelImagePropertySpec::toString() {
51
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
52
- auto javaString = method(_javaPart);
53
- return javaString->toStdString();
44
+ void JHybridViewModelImagePropertySpec::CxxPart::registerNatives() {
45
+ registerHybrid({
46
+ makeNativeMethod("initHybrid", JHybridViewModelImagePropertySpec::CxxPart::initHybrid),
47
+ });
54
48
  }
55
49
 
56
50
  // Properties
@@ -58,11 +52,11 @@ namespace margelo::nitro::rive {
58
52
 
59
53
  // Methods
60
54
  void JHybridViewModelImagePropertySpec::set(const std::optional<std::shared_ptr<HybridRiveImageSpec>>& image) {
61
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRiveImageSpec::javaobject> /* image */)>("set");
55
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridRiveImageSpec::JavaPart> /* image */)>("set");
62
56
  method(_javaPart, image.has_value() ? std::dynamic_pointer_cast<JHybridRiveImageSpec>(image.value())->getJavaPart() : nullptr);
63
57
  }
64
58
  std::function<void()> JHybridViewModelImagePropertySpec::addListener(const std::function<void()>& onChanged) {
65
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void::javaobject> /* onChanged */)>("addListener_cxx");
59
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void::javaobject> /* onChanged */)>("addListener_cxx");
66
60
  auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged));
67
61
  return [&]() -> std::function<void()> {
68
62
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -75,7 +69,7 @@ namespace margelo::nitro::rive {
75
69
  }();
76
70
  }
77
71
  void JHybridViewModelImagePropertySpec::removeListeners() {
78
- static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
72
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeListeners");
79
73
  method(_javaPart);
80
74
  }
81
75
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelImagePropertySpec: public jni::HybridClass<JHybridViewModelImagePropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelImagePropertySpec {
22
+ class JHybridViewModelImagePropertySpec: public virtual HybridViewModelImagePropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec;";
26
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
27
- static void registerNatives();
28
-
29
- protected:
30
- // C++ constructor (called from Java via `initHybrid()`)
31
- explicit JHybridViewModelImagePropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelImagePropertySpec::TAG),
33
- HybridBase(jThis),
34
- _javaPart(jni::make_global(jThis)) {}
24
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridViewModelPropertySpec::JavaPart> {
25
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec;";
26
+ std::shared_ptr<JHybridViewModelImagePropertySpec> getJHybridViewModelImagePropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelImagePropertySpec$CxxPart;";
30
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
31
+ static void registerNatives();
32
+ using HybridBase::HybridBase;
33
+ protected:
34
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
35
+ };
35
36
 
36
37
  public:
38
+ explicit JHybridViewModelImagePropertySpec(const jni::local_ref<JHybridViewModelImagePropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelImagePropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelImagePropertySpec() override {
38
44
  // Hermes GC can destroy JS objects on a non-JNI Thread.
39
45
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
40
46
  }
41
47
 
42
48
  public:
43
- size_t getExternalMemorySize() noexcept override;
44
- bool equals(const std::shared_ptr<HybridObject>& other) override;
45
- void dispose() noexcept override;
46
- std::string toString() override;
47
-
48
- public:
49
- inline const jni::global_ref<JHybridViewModelImagePropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelImagePropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -61,9 +61,7 @@ namespace margelo::nitro::rive {
61
61
  void removeListeners() override;
62
62
 
63
63
  private:
64
- friend HybridBase;
65
- using HybridBase::HybridBase;
66
- jni::global_ref<JHybridViewModelImagePropertySpec::javaobject> _javaPart;
64
+ jni::global_ref<JHybridViewModelImagePropertySpec::JavaPart> _javaPart;
67
65
  };
68
66
 
69
67
  } // namespace margelo::nitro::rive