@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
@@ -54,99 +54,93 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; }
54
54
 
55
55
  namespace margelo::nitro::rive {
56
56
 
57
- jni::local_ref<JHybridViewModelInstanceSpec::jhybriddata> JHybridViewModelInstanceSpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
58
- return makeCxxInstance(jThis);
59
- }
60
-
61
- void JHybridViewModelInstanceSpec::registerNatives() {
62
- registerHybrid({
63
- makeNativeMethod("initHybrid", JHybridViewModelInstanceSpec::initHybrid),
64
- });
57
+ std::shared_ptr<JHybridViewModelInstanceSpec> JHybridViewModelInstanceSpec::JavaPart::getJHybridViewModelInstanceSpec() {
58
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
59
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(hybridObject);
60
+ if (castHybridObject == nullptr) [[unlikely]] {
61
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelInstanceSpec!");
62
+ }
63
+ return castHybridObject;
65
64
  }
66
65
 
67
- size_t JHybridViewModelInstanceSpec::getExternalMemorySize() noexcept {
68
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
69
- return method(_javaPart);
66
+ jni::local_ref<JHybridViewModelInstanceSpec::CxxPart::jhybriddata> JHybridViewModelInstanceSpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
67
+ return makeCxxInstance(jThis);
70
68
  }
71
69
 
72
- bool JHybridViewModelInstanceSpec::equals(const std::shared_ptr<HybridObject>& other) {
73
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(other)) {
74
- return _javaPart == otherCast->_javaPart;
70
+ std::shared_ptr<JHybridObject> JHybridViewModelInstanceSpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
71
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelInstanceSpec::JavaPart>(javaPart);
72
+ if (castJavaPart == nullptr) [[unlikely]] {
73
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelInstanceSpec::JavaPart!");
75
74
  }
76
- return false;
77
- }
78
-
79
- void JHybridViewModelInstanceSpec::dispose() noexcept {
80
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
81
- method(_javaPart);
75
+ return std::make_shared<JHybridViewModelInstanceSpec>(castJavaPart);
82
76
  }
83
77
 
84
- std::string JHybridViewModelInstanceSpec::toString() {
85
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
86
- auto javaString = method(_javaPart);
87
- return javaString->toStdString();
78
+ void JHybridViewModelInstanceSpec::CxxPart::registerNatives() {
79
+ registerHybrid({
80
+ makeNativeMethod("initHybrid", JHybridViewModelInstanceSpec::CxxPart::initHybrid),
81
+ });
88
82
  }
89
83
 
90
84
  // Properties
91
85
  std::string JHybridViewModelInstanceSpec::getInstanceName() {
92
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getInstanceName");
86
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>()>("getInstanceName");
93
87
  auto __result = method(_javaPart);
94
88
  return __result->toStdString();
95
89
  }
96
90
 
97
91
  // Methods
98
92
  std::optional<std::shared_ptr<HybridViewModelNumberPropertySpec>> JHybridViewModelInstanceSpec::numberProperty(const std::string& path) {
99
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelNumberPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("numberProperty");
93
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelNumberPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("numberProperty");
100
94
  auto __result = method(_javaPart, jni::make_jstring(path));
101
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelNumberPropertySpec>()) : std::nullopt;
95
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelNumberPropertySpec()) : std::nullopt;
102
96
  }
103
97
  std::optional<std::shared_ptr<HybridViewModelStringPropertySpec>> JHybridViewModelInstanceSpec::stringProperty(const std::string& path) {
104
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelStringPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("stringProperty");
98
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelStringPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("stringProperty");
105
99
  auto __result = method(_javaPart, jni::make_jstring(path));
106
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelStringPropertySpec>()) : std::nullopt;
100
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelStringPropertySpec()) : std::nullopt;
107
101
  }
108
102
  std::optional<std::shared_ptr<HybridViewModelBooleanPropertySpec>> JHybridViewModelInstanceSpec::booleanProperty(const std::string& path) {
109
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelBooleanPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("booleanProperty");
103
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelBooleanPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("booleanProperty");
110
104
  auto __result = method(_javaPart, jni::make_jstring(path));
111
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelBooleanPropertySpec>()) : std::nullopt;
105
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelBooleanPropertySpec()) : std::nullopt;
112
106
  }
113
107
  std::optional<std::shared_ptr<HybridViewModelColorPropertySpec>> JHybridViewModelInstanceSpec::colorProperty(const std::string& path) {
114
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelColorPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("colorProperty");
108
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelColorPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("colorProperty");
115
109
  auto __result = method(_javaPart, jni::make_jstring(path));
116
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelColorPropertySpec>()) : std::nullopt;
110
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelColorPropertySpec()) : std::nullopt;
117
111
  }
118
112
  std::optional<std::shared_ptr<HybridViewModelEnumPropertySpec>> JHybridViewModelInstanceSpec::enumProperty(const std::string& path) {
119
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelEnumPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("enumProperty");
113
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelEnumPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("enumProperty");
120
114
  auto __result = method(_javaPart, jni::make_jstring(path));
121
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelEnumPropertySpec>()) : std::nullopt;
115
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelEnumPropertySpec()) : std::nullopt;
122
116
  }
123
117
  std::optional<std::shared_ptr<HybridViewModelTriggerPropertySpec>> JHybridViewModelInstanceSpec::triggerProperty(const std::string& path) {
124
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelTriggerPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("triggerProperty");
118
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelTriggerPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("triggerProperty");
125
119
  auto __result = method(_javaPart, jni::make_jstring(path));
126
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelTriggerPropertySpec>()) : std::nullopt;
120
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelTriggerPropertySpec()) : std::nullopt;
127
121
  }
128
122
  std::optional<std::shared_ptr<HybridViewModelImagePropertySpec>> JHybridViewModelInstanceSpec::imageProperty(const std::string& path) {
129
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelImagePropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("imageProperty");
123
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelImagePropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("imageProperty");
130
124
  auto __result = method(_javaPart, jni::make_jstring(path));
131
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelImagePropertySpec>()) : std::nullopt;
125
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelImagePropertySpec()) : std::nullopt;
132
126
  }
133
127
  std::optional<std::shared_ptr<HybridViewModelListPropertySpec>> JHybridViewModelInstanceSpec::listProperty(const std::string& path) {
134
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelListPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("listProperty");
128
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelListPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("listProperty");
135
129
  auto __result = method(_javaPart, jni::make_jstring(path));
136
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelListPropertySpec>()) : std::nullopt;
130
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelListPropertySpec()) : std::nullopt;
137
131
  }
138
132
  std::optional<std::shared_ptr<HybridViewModelArtboardPropertySpec>> JHybridViewModelInstanceSpec::artboardProperty(const std::string& path) {
139
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelArtboardPropertySpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("artboardProperty");
133
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelArtboardPropertySpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("artboardProperty");
140
134
  auto __result = method(_javaPart, jni::make_jstring(path));
141
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelArtboardPropertySpec>()) : std::nullopt;
135
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelArtboardPropertySpec()) : std::nullopt;
142
136
  }
143
137
  std::optional<std::shared_ptr<HybridViewModelInstanceSpec>> JHybridViewModelInstanceSpec::viewModel(const std::string& path) {
144
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::javaobject>(jni::alias_ref<jni::JString> /* path */)>("viewModel");
138
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::JavaPart>(jni::alias_ref<jni::JString> /* path */)>("viewModel");
145
139
  auto __result = method(_javaPart, jni::make_jstring(path));
146
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelInstanceSpec>()) : std::nullopt;
140
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt;
147
141
  }
148
142
  void JHybridViewModelInstanceSpec::replaceViewModel(const std::string& path, const std::shared_ptr<HybridViewModelInstanceSpec>& instance) {
149
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */)>("replaceViewModel");
143
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* path */, jni::alias_ref<JHybridViewModelInstanceSpec::JavaPart> /* instance */)>("replaceViewModel");
150
144
  method(_javaPart, jni::make_jstring(path), std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart());
151
145
  }
152
146
 
@@ -18,34 +18,33 @@ namespace margelo::nitro::rive {
18
18
 
19
19
  using namespace facebook;
20
20
 
21
- class JHybridViewModelInstanceSpec: public jni::HybridClass<JHybridViewModelInstanceSpec, JHybridObject>,
22
- public virtual HybridViewModelInstanceSpec {
21
+ class JHybridViewModelInstanceSpec: public virtual HybridViewModelInstanceSpec, public virtual JHybridObject {
23
22
  public:
24
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec;";
25
- static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
26
- static void registerNatives();
27
-
28
- protected:
29
- // C++ constructor (called from Java via `initHybrid()`)
30
- explicit JHybridViewModelInstanceSpec(jni::alias_ref<jhybridobject> jThis) :
31
- HybridObject(HybridViewModelInstanceSpec::TAG),
32
- HybridBase(jThis),
33
- _javaPart(jni::make_global(jThis)) {}
23
+ struct JavaPart: public jni::JavaClass<JavaPart, JHybridObject::JavaPart> {
24
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec;";
25
+ std::shared_ptr<JHybridViewModelInstanceSpec> getJHybridViewModelInstanceSpec();
26
+ };
27
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridObject::CxxPart> {
28
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelInstanceSpec$CxxPart;";
29
+ static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis);
30
+ static void registerNatives();
31
+ using HybridBase::HybridBase;
32
+ protected:
33
+ std::shared_ptr<JHybridObject> createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) override;
34
+ };
34
35
 
35
36
  public:
37
+ explicit JHybridViewModelInstanceSpec(const jni::local_ref<JHybridViewModelInstanceSpec::JavaPart>& javaPart):
38
+ HybridObject(HybridViewModelInstanceSpec::TAG),
39
+ JHybridObject(javaPart),
40
+ _javaPart(jni::make_global(javaPart)) {}
36
41
  ~JHybridViewModelInstanceSpec() override {
37
42
  // Hermes GC can destroy JS objects on a non-JNI Thread.
38
43
  jni::ThreadScope::WithClassLoader([&] { _javaPart.reset(); });
39
44
  }
40
45
 
41
46
  public:
42
- size_t getExternalMemorySize() noexcept override;
43
- bool equals(const std::shared_ptr<HybridObject>& other) override;
44
- void dispose() noexcept override;
45
- std::string toString() override;
46
-
47
- public:
48
- inline const jni::global_ref<JHybridViewModelInstanceSpec::javaobject>& getJavaPart() const noexcept {
47
+ inline const jni::global_ref<JHybridViewModelInstanceSpec::JavaPart>& getJavaPart() const noexcept {
49
48
  return _javaPart;
50
49
  }
51
50
 
@@ -68,9 +67,7 @@ namespace margelo::nitro::rive {
68
67
  void replaceViewModel(const std::string& path, const std::shared_ptr<HybridViewModelInstanceSpec>& instance) override;
69
68
 
70
69
  private:
71
- friend HybridBase;
72
- using HybridBase::HybridBase;
73
- jni::global_ref<JHybridViewModelInstanceSpec::javaobject> _javaPart;
70
+ jni::global_ref<JHybridViewModelInstanceSpec::JavaPart> _javaPart;
74
71
  };
75
72
 
76
73
  } // namespace margelo::nitro::rive
@@ -20,76 +20,70 @@ namespace margelo::nitro::rive { class HybridViewModelInstanceSpec; }
20
20
 
21
21
  namespace margelo::nitro::rive {
22
22
 
23
- jni::local_ref<JHybridViewModelListPropertySpec::jhybriddata> JHybridViewModelListPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
24
- return makeCxxInstance(jThis);
25
- }
26
-
27
- void JHybridViewModelListPropertySpec::registerNatives() {
28
- registerHybrid({
29
- makeNativeMethod("initHybrid", JHybridViewModelListPropertySpec::initHybrid),
30
- });
23
+ std::shared_ptr<JHybridViewModelListPropertySpec> JHybridViewModelListPropertySpec::JavaPart::getJHybridViewModelListPropertySpec() {
24
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
25
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelListPropertySpec>(hybridObject);
26
+ if (castHybridObject == nullptr) [[unlikely]] {
27
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelListPropertySpec!");
28
+ }
29
+ return castHybridObject;
31
30
  }
32
31
 
33
- size_t JHybridViewModelListPropertySpec::getExternalMemorySize() noexcept {
34
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
35
- return method(_javaPart);
32
+ jni::local_ref<JHybridViewModelListPropertySpec::CxxPart::jhybriddata> JHybridViewModelListPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
33
+ return makeCxxInstance(jThis);
36
34
  }
37
35
 
38
- bool JHybridViewModelListPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
39
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelListPropertySpec>(other)) {
40
- return _javaPart == otherCast->_javaPart;
36
+ std::shared_ptr<JHybridObject> JHybridViewModelListPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
37
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelListPropertySpec::JavaPart>(javaPart);
38
+ if (castJavaPart == nullptr) [[unlikely]] {
39
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelListPropertySpec::JavaPart!");
41
40
  }
42
- return false;
43
- }
44
-
45
- void JHybridViewModelListPropertySpec::dispose() noexcept {
46
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
47
- method(_javaPart);
41
+ return std::make_shared<JHybridViewModelListPropertySpec>(castJavaPart);
48
42
  }
49
43
 
50
- std::string JHybridViewModelListPropertySpec::toString() {
51
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
52
- auto javaString = method(_javaPart);
53
- return javaString->toStdString();
44
+ void JHybridViewModelListPropertySpec::CxxPart::registerNatives() {
45
+ registerHybrid({
46
+ makeNativeMethod("initHybrid", JHybridViewModelListPropertySpec::CxxPart::initHybrid),
47
+ });
54
48
  }
55
49
 
56
50
  // Properties
57
51
  double JHybridViewModelListPropertySpec::getLength() {
58
- static const auto method = javaClassStatic()->getMethod<double()>("getLength");
52
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double()>("getLength");
59
53
  auto __result = method(_javaPart);
60
54
  return __result;
61
55
  }
62
56
 
63
57
  // Methods
64
58
  std::optional<std::shared_ptr<HybridViewModelInstanceSpec>> JHybridViewModelListPropertySpec::getInstanceAt(double index) {
65
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::javaobject>(double /* index */)>("getInstanceAt");
59
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JHybridViewModelInstanceSpec::JavaPart>(double /* index */)>("getInstanceAt");
66
60
  auto __result = method(_javaPart, index);
67
- return __result != nullptr ? std::make_optional(__result->cthis()->shared_cast<JHybridViewModelInstanceSpec>()) : std::nullopt;
61
+ return __result != nullptr ? std::make_optional(__result->getJHybridViewModelInstanceSpec()) : std::nullopt;
68
62
  }
69
63
  void JHybridViewModelListPropertySpec::addInstance(const std::shared_ptr<HybridViewModelInstanceSpec>& instance) {
70
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */)>("addInstance");
64
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::JavaPart> /* instance */)>("addInstance");
71
65
  method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart());
72
66
  }
73
67
  bool JHybridViewModelListPropertySpec::addInstanceAt(const std::shared_ptr<HybridViewModelInstanceSpec>& instance, double index) {
74
- static const auto method = javaClassStatic()->getMethod<jboolean(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */, double /* index */)>("addInstanceAt");
68
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(jni::alias_ref<JHybridViewModelInstanceSpec::JavaPart> /* instance */, double /* index */)>("addInstanceAt");
75
69
  auto __result = method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart(), index);
76
70
  return static_cast<bool>(__result);
77
71
  }
78
72
  void JHybridViewModelListPropertySpec::removeInstance(const std::shared_ptr<HybridViewModelInstanceSpec>& instance) {
79
- static const auto method = javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::javaobject> /* instance */)>("removeInstance");
73
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<JHybridViewModelInstanceSpec::JavaPart> /* instance */)>("removeInstance");
80
74
  method(_javaPart, std::dynamic_pointer_cast<JHybridViewModelInstanceSpec>(instance)->getJavaPart());
81
75
  }
82
76
  void JHybridViewModelListPropertySpec::removeInstanceAt(double index) {
83
- static const auto method = javaClassStatic()->getMethod<void(double /* index */)>("removeInstanceAt");
77
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(double /* index */)>("removeInstanceAt");
84
78
  method(_javaPart, index);
85
79
  }
86
80
  bool JHybridViewModelListPropertySpec::swap(double index1, double index2) {
87
- static const auto method = javaClassStatic()->getMethod<jboolean(double /* index1 */, double /* index2 */)>("swap");
81
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean(double /* index1 */, double /* index2 */)>("swap");
88
82
  auto __result = method(_javaPart, index1, index2);
89
83
  return static_cast<bool>(__result);
90
84
  }
91
85
  std::function<void()> JHybridViewModelListPropertySpec::addListener(const std::function<void()>& onChanged) {
92
- static const auto method = javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void::javaobject> /* onChanged */)>("addListener_cxx");
86
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<JFunc_void::javaobject>(jni::alias_ref<JFunc_void::javaobject> /* onChanged */)>("addListener_cxx");
93
87
  auto __result = method(_javaPart, JFunc_void_cxx::fromCpp(onChanged));
94
88
  return [&]() -> std::function<void()> {
95
89
  if (__result->isInstanceOf(JFunc_void_cxx::javaClassStatic())) [[likely]] {
@@ -102,7 +96,7 @@ namespace margelo::nitro::rive {
102
96
  }();
103
97
  }
104
98
  void JHybridViewModelListPropertySpec::removeListeners() {
105
- static const auto method = javaClassStatic()->getMethod<void()>("removeListeners");
99
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void()>("removeListeners");
106
100
  method(_javaPart);
107
101
  }
108
102
 
@@ -19,34 +19,34 @@ namespace margelo::nitro::rive {
19
19
 
20
20
  using namespace facebook;
21
21
 
22
- class JHybridViewModelListPropertySpec: public jni::HybridClass<JHybridViewModelListPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelListPropertySpec {
22
+ class JHybridViewModelListPropertySpec: public virtual HybridViewModelListPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelListPropertySpec;";
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 JHybridViewModelListPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelListPropertySpec::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/HybridViewModelListPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelListPropertySpec> getJHybridViewModelListPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelListPropertySpec$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 JHybridViewModelListPropertySpec(const jni::local_ref<JHybridViewModelListPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelListPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelListPropertySpec() 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<JHybridViewModelListPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelListPropertySpec::JavaPart>& getJavaPart() const noexcept {
50
50
  return _javaPart;
51
51
  }
52
52
 
@@ -66,9 +66,7 @@ namespace margelo::nitro::rive {
66
66
  void removeListeners() override;
67
67
 
68
68
  private:
69
- friend HybridBase;
70
- using HybridBase::HybridBase;
71
- jni::global_ref<JHybridViewModelListPropertySpec::javaobject> _javaPart;
69
+ jni::global_ref<JHybridViewModelListPropertySpec::JavaPart> _javaPart;
72
70
  };
73
71
 
74
72
  } // namespace margelo::nitro::rive
@@ -16,53 +16,47 @@
16
16
 
17
17
  namespace margelo::nitro::rive {
18
18
 
19
- jni::local_ref<JHybridViewModelNumberPropertySpec::jhybriddata> JHybridViewModelNumberPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
20
- return makeCxxInstance(jThis);
21
- }
22
-
23
- void JHybridViewModelNumberPropertySpec::registerNatives() {
24
- registerHybrid({
25
- makeNativeMethod("initHybrid", JHybridViewModelNumberPropertySpec::initHybrid),
26
- });
19
+ std::shared_ptr<JHybridViewModelNumberPropertySpec> JHybridViewModelNumberPropertySpec::JavaPart::getJHybridViewModelNumberPropertySpec() {
20
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
21
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelNumberPropertySpec>(hybridObject);
22
+ if (castHybridObject == nullptr) [[unlikely]] {
23
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelNumberPropertySpec!");
24
+ }
25
+ return castHybridObject;
27
26
  }
28
27
 
29
- size_t JHybridViewModelNumberPropertySpec::getExternalMemorySize() noexcept {
30
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
31
- return method(_javaPart);
28
+ jni::local_ref<JHybridViewModelNumberPropertySpec::CxxPart::jhybriddata> JHybridViewModelNumberPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
29
+ return makeCxxInstance(jThis);
32
30
  }
33
31
 
34
- bool JHybridViewModelNumberPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
35
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelNumberPropertySpec>(other)) {
36
- return _javaPart == otherCast->_javaPart;
32
+ std::shared_ptr<JHybridObject> JHybridViewModelNumberPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
33
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelNumberPropertySpec::JavaPart>(javaPart);
34
+ if (castJavaPart == nullptr) [[unlikely]] {
35
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelNumberPropertySpec::JavaPart!");
37
36
  }
38
- return false;
39
- }
40
-
41
- void JHybridViewModelNumberPropertySpec::dispose() noexcept {
42
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
43
- method(_javaPart);
37
+ return std::make_shared<JHybridViewModelNumberPropertySpec>(castJavaPart);
44
38
  }
45
39
 
46
- std::string JHybridViewModelNumberPropertySpec::toString() {
47
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
48
- auto javaString = method(_javaPart);
49
- return javaString->toStdString();
40
+ void JHybridViewModelNumberPropertySpec::CxxPart::registerNatives() {
41
+ registerHybrid({
42
+ makeNativeMethod("initHybrid", JHybridViewModelNumberPropertySpec::CxxPart::initHybrid),
43
+ });
50
44
  }
51
45
 
52
46
  // Properties
53
47
  double JHybridViewModelNumberPropertySpec::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 JHybridViewModelNumberPropertySpec::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()> JHybridViewModelNumberPropertySpec::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 JHybridViewModelNumberPropertySpec::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 JHybridViewModelNumberPropertySpec: public jni::HybridClass<JHybridViewModelNumberPropertySpec, JHybridViewModelPropertySpec>,
23
- public virtual HybridViewModelNumberPropertySpec {
22
+ class JHybridViewModelNumberPropertySpec: public virtual HybridViewModelNumberPropertySpec, public virtual JHybridViewModelPropertySpec {
24
23
  public:
25
- static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelNumberPropertySpec;";
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 JHybridViewModelNumberPropertySpec(jni::alias_ref<jhybridobject> jThis) :
32
- HybridObject(HybridViewModelNumberPropertySpec::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/HybridViewModelNumberPropertySpec;";
26
+ std::shared_ptr<JHybridViewModelNumberPropertySpec> getJHybridViewModelNumberPropertySpec();
27
+ };
28
+ struct CxxPart: public jni::HybridClass<CxxPart, JHybridViewModelPropertySpec::CxxPart> {
29
+ static auto constexpr kJavaDescriptor = "Lcom/margelo/nitro/rive/HybridViewModelNumberPropertySpec$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 JHybridViewModelNumberPropertySpec(const jni::local_ref<JHybridViewModelNumberPropertySpec::JavaPart>& javaPart):
39
+ HybridObject(HybridViewModelNumberPropertySpec::TAG),
40
+ JHybridObject(javaPart),
41
+ JHybridViewModelPropertySpec(javaPart),
42
+ _javaPart(jni::make_global(javaPart)) {}
37
43
  ~JHybridViewModelNumberPropertySpec() 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<JHybridViewModelNumberPropertySpec::javaobject>& getJavaPart() const noexcept {
49
+ inline const jni::global_ref<JHybridViewModelNumberPropertySpec::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<JHybridViewModelNumberPropertySpec::javaobject> _javaPart;
64
+ jni::global_ref<JHybridViewModelNumberPropertySpec::JavaPart> _javaPart;
67
65
  };
68
66
 
69
67
  } // namespace margelo::nitro::rive
@@ -13,37 +13,31 @@
13
13
 
14
14
  namespace margelo::nitro::rive {
15
15
 
16
- jni::local_ref<JHybridViewModelPropertySpec::jhybriddata> JHybridViewModelPropertySpec::initHybrid(jni::alias_ref<jhybridobject> jThis) {
17
- return makeCxxInstance(jThis);
18
- }
19
-
20
- void JHybridViewModelPropertySpec::registerNatives() {
21
- registerHybrid({
22
- makeNativeMethod("initHybrid", JHybridViewModelPropertySpec::initHybrid),
23
- });
16
+ std::shared_ptr<JHybridViewModelPropertySpec> JHybridViewModelPropertySpec::JavaPart::getJHybridViewModelPropertySpec() {
17
+ auto hybridObject = JHybridObject::JavaPart::getJHybridObject();
18
+ auto castHybridObject = std::dynamic_pointer_cast<JHybridViewModelPropertySpec>(hybridObject);
19
+ if (castHybridObject == nullptr) [[unlikely]] {
20
+ throw std::runtime_error("Failed to downcast JHybridObject to JHybridViewModelPropertySpec!");
21
+ }
22
+ return castHybridObject;
24
23
  }
25
24
 
26
- size_t JHybridViewModelPropertySpec::getExternalMemorySize() noexcept {
27
- static const auto method = javaClassStatic()->getMethod<jlong()>("getMemorySize");
28
- return method(_javaPart);
25
+ jni::local_ref<JHybridViewModelPropertySpec::CxxPart::jhybriddata> JHybridViewModelPropertySpec::CxxPart::initHybrid(jni::alias_ref<jhybridobject> jThis) {
26
+ return makeCxxInstance(jThis);
29
27
  }
30
28
 
31
- bool JHybridViewModelPropertySpec::equals(const std::shared_ptr<HybridObject>& other) {
32
- if (auto otherCast = std::dynamic_pointer_cast<JHybridViewModelPropertySpec>(other)) {
33
- return _javaPart == otherCast->_javaPart;
29
+ std::shared_ptr<JHybridObject> JHybridViewModelPropertySpec::CxxPart::createHybridObject(const jni::local_ref<JHybridObject::JavaPart>& javaPart) {
30
+ auto castJavaPart = jni::dynamic_ref_cast<JHybridViewModelPropertySpec::JavaPart>(javaPart);
31
+ if (castJavaPart == nullptr) [[unlikely]] {
32
+ throw std::runtime_error("Failed to cast JHybridObject::JavaPart to JHybridViewModelPropertySpec::JavaPart!");
34
33
  }
35
- return false;
36
- }
37
-
38
- void JHybridViewModelPropertySpec::dispose() noexcept {
39
- static const auto method = javaClassStatic()->getMethod<void()>("dispose");
40
- method(_javaPart);
34
+ return std::make_shared<JHybridViewModelPropertySpec>(castJavaPart);
41
35
  }
42
36
 
43
- std::string JHybridViewModelPropertySpec::toString() {
44
- static const auto method = javaClassStatic()->getMethod<jni::JString()>("toString");
45
- auto javaString = method(_javaPart);
46
- return javaString->toStdString();
37
+ void JHybridViewModelPropertySpec::CxxPart::registerNatives() {
38
+ registerHybrid({
39
+ makeNativeMethod("initHybrid", JHybridViewModelPropertySpec::CxxPart::initHybrid),
40
+ });
47
41
  }
48
42
 
49
43
  // Properties