react-native-list 1.0.1 → 2.0.0-alpha.2

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 (224) hide show
  1. package/README.md +186 -32
  2. package/ReactNativeList.podspec +39 -0
  3. package/android/CMakeLists.txt +48 -0
  4. package/android/build.gradle +151 -0
  5. package/android/fix-prefab.gradle +51 -0
  6. package/android/gradle.properties +5 -0
  7. package/android/src/main/AndroidManifest.xml +2 -0
  8. package/android/src/main/cpp/JHybridUiListModule.cpp +192 -0
  9. package/android/src/main/cpp/JHybridUiListModule.h +50 -0
  10. package/android/src/main/cpp/cpp-adapter.cpp +12 -0
  11. package/android/src/main/java/com/hannojg/reactnativelist/ReactNativeListPackage.kt +27 -0
  12. package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridNativeListDataSource.kt +146 -0
  13. package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridNativeListLayout.kt +86 -0
  14. package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridUiListModule.kt +116 -0
  15. package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridUiListView.kt +410 -0
  16. package/android/src/main/java/com/margelo/nitro/reactnativelist/HybridViewHolder.kt +9 -0
  17. package/android/src/main/java/com/margelo/nitro/reactnativelist/NativeListAdapter.kt +217 -0
  18. package/ios/DataSource/HybridNativeListDataSource.swift +213 -0
  19. package/ios/HybridObjects/HybridUiListModule.swift +49 -0
  20. package/ios/HybridObjects/HybridViewHolder.swift +16 -0
  21. package/ios/Layout/HybridNativeListLayout.swift +128 -0
  22. package/ios/Utils/ErrorUtils.h +26 -0
  23. package/ios/Utils/HybridIOSWorkletsModuleProxyHolder.swift +10 -0
  24. package/ios/Utils/SurfaceHelper.h +20 -0
  25. package/ios/Utils/SurfaceHelper.mm +144 -0
  26. package/ios/Utils/SurfacePresenterRegistry.h +17 -0
  27. package/ios/Utils/SurfacePresenterRegistry.m +31 -0
  28. package/ios/Utils/TurboModuleInstaller.h +18 -0
  29. package/ios/Utils/TurboModuleInstaller.mm +267 -0
  30. package/ios/Views/HostCell.swift +216 -0
  31. package/ios/Views/HybridUiListView.swift +695 -0
  32. package/lib/ReactFabricMirror.d.ts +4 -0
  33. package/lib/ReactFabricMirror.js +515 -0
  34. package/lib/UiListModule.d.ts +2 -0
  35. package/lib/UiListModule.js +2 -0
  36. package/lib/index.d.ts +8 -0
  37. package/lib/index.js +21 -0
  38. package/lib/privateGlobals.d.ts +14 -0
  39. package/lib/privateGlobals.js +2 -0
  40. package/lib/renderer/RenderHelper.d.ts +2 -0
  41. package/lib/renderer/RenderHelper.js +11 -0
  42. package/lib/renderer/UiManagerHelper.d.ts +2 -0
  43. package/lib/renderer/UiManagerHelper.js +2 -0
  44. package/lib/renderer/fabric/RenderHelper.d.ts +2 -0
  45. package/lib/renderer/fabric/RenderHelper.js +11 -0
  46. package/lib/renderer/fabric/UiManagerHelper.d.ts +2 -0
  47. package/lib/renderer/fabric/UiManagerHelper.js +2 -0
  48. package/lib/renderer/react/ReactFabricMirror.d.ts +4 -0
  49. package/lib/renderer/react/ReactFabricMirror.js +515 -0
  50. package/lib/renderer/react/ReactFabricRenderer.d.ts +3 -0
  51. package/lib/renderer/react/ReactFabricRenderer.js +9 -0
  52. package/lib/specs/IOSWorkletsModuleProxyHolder.nitro.d.ts +6 -0
  53. package/lib/specs/IOSWorkletsModuleProxyHolder.nitro.js +1 -0
  54. package/lib/specs/UIListModule.nitro.d.ts +9 -0
  55. package/lib/specs/UIListModule.nitro.js +1 -0
  56. package/lib/specs/UIManagerHelper.nitro.d.ts +13 -0
  57. package/lib/specs/UIManagerHelper.nitro.js +1 -0
  58. package/lib/specs/UiListView.nitro.d.ts +20 -0
  59. package/lib/specs/UiListView.nitro.js +1 -0
  60. package/lib/specs/ViewHolder.nitro.d.ts +6 -0
  61. package/lib/specs/ViewHolder.nitro.js +1 -0
  62. package/lib/views/List.d.ts +35 -0
  63. package/lib/views/List.js +225 -0
  64. package/lib/views/UiListHostComponent.d.ts +2 -0
  65. package/lib/views/UiListHostComponent.js +3 -0
  66. package/metro/RendererProxyThreadSwitch.js +66 -0
  67. package/metro-config.d.ts +1 -0
  68. package/metro-config.js +124 -0
  69. package/nitro.json +47 -0
  70. package/nitrogen/generated/.gitattributes +1 -0
  71. package/nitrogen/generated/android/ReactNativeList+autolinking.cmake +99 -0
  72. package/nitrogen/generated/android/ReactNativeList+autolinking.gradle +27 -0
  73. package/nitrogen/generated/android/ReactNativeListOnLoad.cpp +156 -0
  74. package/nitrogen/generated/android/ReactNativeListOnLoad.hpp +34 -0
  75. package/nitrogen/generated/android/c++/JFunc_bool_NativeListItem_NativeListItem.hpp +83 -0
  76. package/nitrogen/generated/android/c++/JFunc_bool_double_NativeListItem_double.hpp +83 -0
  77. package/nitrogen/generated/android/c++/JFunc_double_std__string.hpp +78 -0
  78. package/nitrogen/generated/android/c++/JHybridIOSWorkletsModuleProxyHolderSpec.cpp +49 -0
  79. package/nitrogen/generated/android/c++/JHybridIOSWorkletsModuleProxyHolderSpec.hpp +63 -0
  80. package/nitrogen/generated/android/c++/JHybridNativeLinearListLayoutSpec.cpp +63 -0
  81. package/nitrogen/generated/android/c++/JHybridNativeLinearListLayoutSpec.hpp +65 -0
  82. package/nitrogen/generated/android/c++/JHybridNativeListDataSourceSpec.cpp +101 -0
  83. package/nitrogen/generated/android/c++/JHybridNativeListDataSourceSpec.hpp +70 -0
  84. package/nitrogen/generated/android/c++/JHybridNativeListLayoutSpec.cpp +49 -0
  85. package/nitrogen/generated/android/c++/JHybridNativeListLayoutSpec.hpp +63 -0
  86. package/nitrogen/generated/android/c++/JHybridUiListModuleSpec.cpp +65 -0
  87. package/nitrogen/generated/android/c++/JHybridUiListModuleSpec.hpp +64 -0
  88. package/nitrogen/generated/android/c++/JHybridUiListViewSpec.cpp +92 -0
  89. package/nitrogen/generated/android/c++/JHybridUiListViewSpec.hpp +67 -0
  90. package/nitrogen/generated/android/c++/JHybridViewHolderSpec.cpp +49 -0
  91. package/nitrogen/generated/android/c++/JHybridViewHolderSpec.hpp +63 -0
  92. package/nitrogen/generated/android/c++/JNativeItemSizeEstimate.hpp +61 -0
  93. package/nitrogen/generated/android/c++/JNativeLinearListLayoutConfig.hpp +81 -0
  94. package/nitrogen/generated/android/c++/JNativeLinearListLayoutIOSConfig.hpp +59 -0
  95. package/nitrogen/generated/android/c++/JNativeListItem.hpp +76 -0
  96. package/nitrogen/generated/android/c++/JVariant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.cpp +26 -0
  97. package/nitrogen/generated/android/c++/JVariant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.hpp +72 -0
  98. package/nitrogen/generated/android/c++/views/JHybridUiListViewStateUpdater.cpp +53 -0
  99. package/nitrogen/generated/android/c++/views/JHybridUiListViewStateUpdater.hpp +49 -0
  100. package/nitrogen/generated/android/c++/views/JHybridViewHolderStateUpdater.cpp +53 -0
  101. package/nitrogen/generated/android/c++/views/JHybridViewHolderStateUpdater.hpp +49 -0
  102. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_bool_NativeListItem_NativeListItem.kt +80 -0
  103. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_bool_double_NativeListItem_double.kt +80 -0
  104. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Func_double_std__string.kt +80 -0
  105. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridIOSWorkletsModuleProxyHolderSpec.kt +52 -0
  106. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeLinearListLayoutSpec.kt +54 -0
  107. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeListDataSourceSpec.kt +87 -0
  108. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridNativeListLayoutSpec.kt +52 -0
  109. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridUiListModuleSpec.kt +59 -0
  110. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridUiListViewSpec.kt +76 -0
  111. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/HybridViewHolderSpec.kt +53 -0
  112. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeItemSizeEstimate.kt +56 -0
  113. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeLinearListLayoutConfig.kt +76 -0
  114. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeLinearListLayoutIOSConfig.kt +51 -0
  115. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/NativeListItem.kt +71 -0
  116. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/ReactNativeListOnLoad.kt +35 -0
  117. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/Variant_NullType_HybridIOSWorkletsModuleProxyHolderSpec.kt +62 -0
  118. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridUiListViewManager.kt +80 -0
  119. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridUiListViewStateUpdater.kt +23 -0
  120. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridViewHolderManager.kt +80 -0
  121. package/nitrogen/generated/android/kotlin/com/margelo/nitro/reactnativelist/views/HybridViewHolderStateUpdater.kt +23 -0
  122. package/nitrogen/generated/ios/ReactNativeList+autolinking.rb +62 -0
  123. package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Bridge.cpp +162 -0
  124. package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Bridge.hpp +368 -0
  125. package/nitrogen/generated/ios/ReactNativeList-Swift-Cxx-Umbrella.hpp +92 -0
  126. package/nitrogen/generated/ios/ReactNativeListAutolinking.mm +83 -0
  127. package/nitrogen/generated/ios/ReactNativeListAutolinking.swift +86 -0
  128. package/nitrogen/generated/ios/c++/HybridIOSWorkletsModuleProxyHolderSpecSwift.cpp +11 -0
  129. package/nitrogen/generated/ios/c++/HybridIOSWorkletsModuleProxyHolderSpecSwift.hpp +75 -0
  130. package/nitrogen/generated/ios/c++/HybridNativeLinearListLayoutSpecSwift.cpp +11 -0
  131. package/nitrogen/generated/ios/c++/HybridNativeLinearListLayoutSpecSwift.hpp +92 -0
  132. package/nitrogen/generated/ios/c++/HybridNativeListDataSourceSpecSwift.cpp +11 -0
  133. package/nitrogen/generated/ios/c++/HybridNativeListDataSourceSpecSwift.hpp +132 -0
  134. package/nitrogen/generated/ios/c++/HybridNativeListLayoutSpecSwift.cpp +11 -0
  135. package/nitrogen/generated/ios/c++/HybridNativeListLayoutSpecSwift.hpp +75 -0
  136. package/nitrogen/generated/ios/c++/HybridUiListModuleSpecSwift.cpp +11 -0
  137. package/nitrogen/generated/ios/c++/HybridUiListModuleSpecSwift.hpp +93 -0
  138. package/nitrogen/generated/ios/c++/HybridUiListViewSpecSwift.cpp +11 -0
  139. package/nitrogen/generated/ios/c++/HybridUiListViewSpecSwift.hpp +121 -0
  140. package/nitrogen/generated/ios/c++/HybridViewHolderSpecSwift.cpp +11 -0
  141. package/nitrogen/generated/ios/c++/HybridViewHolderSpecSwift.hpp +75 -0
  142. package/nitrogen/generated/ios/c++/views/HybridUiListViewComponent.mm +118 -0
  143. package/nitrogen/generated/ios/c++/views/HybridViewHolderComponent.mm +118 -0
  144. package/nitrogen/generated/ios/swift/Func_bool_NativeListItem_NativeListItem.swift +47 -0
  145. package/nitrogen/generated/ios/swift/Func_bool_double_NativeListItem_double.swift +47 -0
  146. package/nitrogen/generated/ios/swift/Func_double_std__string.swift +47 -0
  147. package/nitrogen/generated/ios/swift/HybridIOSWorkletsModuleProxyHolderSpec.swift +55 -0
  148. package/nitrogen/generated/ios/swift/HybridIOSWorkletsModuleProxyHolderSpec_cxx.swift +128 -0
  149. package/nitrogen/generated/ios/swift/HybridNativeLinearListLayoutSpec.swift +55 -0
  150. package/nitrogen/generated/ios/swift/HybridNativeLinearListLayoutSpec_cxx.swift +140 -0
  151. package/nitrogen/generated/ios/swift/HybridNativeListDataSourceSpec.swift +62 -0
  152. package/nitrogen/generated/ios/swift/HybridNativeListDataSourceSpec_cxx.swift +222 -0
  153. package/nitrogen/generated/ios/swift/HybridNativeListLayoutSpec.swift +55 -0
  154. package/nitrogen/generated/ios/swift/HybridNativeListLayoutSpec_cxx.swift +128 -0
  155. package/nitrogen/generated/ios/swift/HybridUiListModuleSpec.swift +56 -0
  156. package/nitrogen/generated/ios/swift/HybridUiListModuleSpec_cxx.swift +175 -0
  157. package/nitrogen/generated/ios/swift/HybridUiListViewSpec.swift +59 -0
  158. package/nitrogen/generated/ios/swift/HybridUiListViewSpec_cxx.swift +227 -0
  159. package/nitrogen/generated/ios/swift/HybridViewHolderSpec.swift +55 -0
  160. package/nitrogen/generated/ios/swift/HybridViewHolderSpec_cxx.swift +147 -0
  161. package/nitrogen/generated/ios/swift/NativeItemSizeEstimate.swift +60 -0
  162. package/nitrogen/generated/ios/swift/NativeLinearListLayoutConfig.swift +60 -0
  163. package/nitrogen/generated/ios/swift/NativeLinearListLayoutIOSConfig.swift +35 -0
  164. package/nitrogen/generated/ios/swift/NativeListItem.swift +75 -0
  165. package/nitrogen/generated/ios/swift/Variant_NullType__any_HybridIOSWorkletsModuleProxyHolderSpec_.swift +30 -0
  166. package/nitrogen/generated/shared/c++/HybridIOSWorkletsModuleProxyHolderSpec.cpp +21 -0
  167. package/nitrogen/generated/shared/c++/HybridIOSWorkletsModuleProxyHolderSpec.hpp +62 -0
  168. package/nitrogen/generated/shared/c++/HybridNativeLinearListLayoutSpec.cpp +22 -0
  169. package/nitrogen/generated/shared/c++/HybridNativeLinearListLayoutSpec.hpp +67 -0
  170. package/nitrogen/generated/shared/c++/HybridNativeListDataSourceSpec.cpp +28 -0
  171. package/nitrogen/generated/shared/c++/HybridNativeListDataSourceSpec.hpp +72 -0
  172. package/nitrogen/generated/shared/c++/HybridNativeListLayoutSpec.cpp +21 -0
  173. package/nitrogen/generated/shared/c++/HybridNativeListLayoutSpec.hpp +62 -0
  174. package/nitrogen/generated/shared/c++/HybridUiListModuleSpec.cpp +22 -0
  175. package/nitrogen/generated/shared/c++/HybridUiListModuleSpec.hpp +68 -0
  176. package/nitrogen/generated/shared/c++/HybridUiListViewSpec.cpp +25 -0
  177. package/nitrogen/generated/shared/c++/HybridUiListViewSpec.hpp +79 -0
  178. package/nitrogen/generated/shared/c++/HybridUiManagerHelperSpec.cpp +23 -0
  179. package/nitrogen/generated/shared/c++/HybridUiManagerHelperSpec.hpp +65 -0
  180. package/nitrogen/generated/shared/c++/HybridViewHolderSpec.cpp +21 -0
  181. package/nitrogen/generated/shared/c++/HybridViewHolderSpec.hpp +62 -0
  182. package/nitrogen/generated/shared/c++/NativeItemSizeEstimate.hpp +87 -0
  183. package/nitrogen/generated/shared/c++/NativeLinearListLayoutConfig.hpp +105 -0
  184. package/nitrogen/generated/shared/c++/NativeLinearListLayoutIOSConfig.hpp +85 -0
  185. package/nitrogen/generated/shared/c++/NativeListItem.hpp +101 -0
  186. package/nitrogen/generated/shared/c++/views/HybridUiListViewComponent.cpp +72 -0
  187. package/nitrogen/generated/shared/c++/views/HybridUiListViewComponent.hpp +109 -0
  188. package/nitrogen/generated/shared/c++/views/HybridViewHolderComponent.cpp +72 -0
  189. package/nitrogen/generated/shared/c++/views/HybridViewHolderComponent.hpp +109 -0
  190. package/nitrogen/generated/shared/json/UiListViewConfig.json +9 -0
  191. package/nitrogen/generated/shared/json/ViewHolderConfig.json +9 -0
  192. package/package.json +152 -5
  193. package/react-native.config.js +16 -0
  194. package/src/ListDataSource.ts +232 -0
  195. package/src/ListLayout.ts +95 -0
  196. package/src/UiListModule.ts +5 -0
  197. package/src/hooks/useChangeEffect.ts +50 -0
  198. package/src/index.tsx +49 -0
  199. package/src/privateGlobals.ts +20 -0
  200. package/src/renderer/fabric/RenderHelper.ts +29 -0
  201. package/src/renderer/fabric/UiManagerHelper.ts +5 -0
  202. package/src/renderer/react/ReactFabricMirror.bundle.js +1984 -0
  203. package/src/renderer/react/ReactFabricMirror.ts +766 -0
  204. package/src/renderer/react/ReactFabricRenderer.ts +11 -0
  205. package/src/specs/IOSWorkletsModuleProxyHolder.nitro.ts +6 -0
  206. package/src/specs/NativeLinearListLayout.nitro.ts +23 -0
  207. package/src/specs/NativeListDataSource.nitro.ts +28 -0
  208. package/src/specs/NativeListLayout.nitro.ts +6 -0
  209. package/src/specs/UIListModule.nitro.ts +13 -0
  210. package/src/specs/UIManagerHelper.nitro.ts +34 -0
  211. package/src/specs/UiListView.nitro.ts +31 -0
  212. package/src/specs/ViewHolder.nitro.ts +11 -0
  213. package/src/views/List.tsx +525 -0
  214. package/src/views/UiListHostComponent.ts +8 -0
  215. package/FillRateHelper.js +0 -179
  216. package/FlatList.js +0 -494
  217. package/LICENSE.md +0 -31
  218. package/MetroListView.js +0 -166
  219. package/SectionList.js +0 -291
  220. package/ViewabilityHelper.js +0 -260
  221. package/VirtualizeUtils.js +0 -163
  222. package/VirtualizedList.js +0 -861
  223. package/VirtualizedSectionList.js +0 -397
  224. package/index.js +0 -5
@@ -0,0 +1,93 @@
1
+ ///
2
+ /// HybridUiListModuleSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridUiListModuleSpec.hpp"
11
+
12
+ // Forward declaration of `HybridUiListModuleSpec_cxx` to properly resolve imports.
13
+ namespace ReactNativeList { class HybridUiListModuleSpec_cxx; }
14
+
15
+ // Forward declaration of `HybridIOSWorkletsModuleProxyHolderSpec` to properly resolve imports.
16
+ namespace margelo::nitro::reactnativelist { class HybridIOSWorkletsModuleProxyHolderSpec; }
17
+
18
+ #include <memory>
19
+ #include "HybridIOSWorkletsModuleProxyHolderSpec.hpp"
20
+ #include <NitroModules/Null.hpp>
21
+ #include <variant>
22
+ #include <optional>
23
+
24
+ #include "ReactNativeList-Swift-Cxx-Umbrella.hpp"
25
+
26
+ namespace margelo::nitro::reactnativelist {
27
+
28
+ /**
29
+ * The C++ part of HybridUiListModuleSpec_cxx.swift.
30
+ *
31
+ * HybridUiListModuleSpecSwift (C++) accesses HybridUiListModuleSpec_cxx (Swift), and might
32
+ * contain some additional bridging code for C++ <> Swift interop.
33
+ *
34
+ * Since this obviously introduces an overhead, I hope at some point in
35
+ * the future, HybridUiListModuleSpec_cxx can directly inherit from the C++ class HybridUiListModuleSpec
36
+ * to simplify the whole structure and memory management.
37
+ */
38
+ class HybridUiListModuleSpecSwift: public virtual HybridUiListModuleSpec {
39
+ public:
40
+ // Constructor from a Swift instance
41
+ explicit HybridUiListModuleSpecSwift(const ReactNativeList::HybridUiListModuleSpec_cxx& swiftPart):
42
+ HybridObject(HybridUiListModuleSpec::TAG),
43
+ _swiftPart(swiftPart) { }
44
+
45
+ public:
46
+ // Get the Swift part
47
+ inline ReactNativeList::HybridUiListModuleSpec_cxx& getSwiftPart() noexcept {
48
+ return _swiftPart;
49
+ }
50
+
51
+ public:
52
+ inline size_t getExternalMemorySize() noexcept override {
53
+ return _swiftPart.getMemorySize();
54
+ }
55
+ bool equals(const std::shared_ptr<HybridObject>& other) override {
56
+ if (auto otherCast = std::dynamic_pointer_cast<HybridUiListModuleSpecSwift>(other)) {
57
+ return _swiftPart.equals(otherCast->_swiftPart);
58
+ }
59
+ return false;
60
+ }
61
+ void dispose() noexcept override {
62
+ _swiftPart.dispose();
63
+ }
64
+ std::string toString() override {
65
+ return _swiftPart.toString();
66
+ }
67
+
68
+ public:
69
+ // Properties
70
+
71
+
72
+ public:
73
+ // Methods
74
+ inline std::shared_ptr<HybridIOSWorkletsModuleProxyHolderSpec> iosGetWorkletsModule() override {
75
+ auto __result = _swiftPart.iosGetWorkletsModule();
76
+ if (__result.hasError()) [[unlikely]] {
77
+ std::rethrow_exception(__result.error());
78
+ }
79
+ auto __value = std::move(__result.value());
80
+ return __value;
81
+ }
82
+ inline void setupRuntime(const std::optional<std::variant<nitro::NullType, std::shared_ptr<HybridIOSWorkletsModuleProxyHolderSpec>>>& workletsModuleHolder) override {
83
+ auto __result = _swiftPart.setupRuntime(workletsModuleHolder);
84
+ if (__result.hasError()) [[unlikely]] {
85
+ std::rethrow_exception(__result.error());
86
+ }
87
+ }
88
+
89
+ private:
90
+ ReactNativeList::HybridUiListModuleSpec_cxx _swiftPart;
91
+ };
92
+
93
+ } // namespace margelo::nitro::reactnativelist
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridUiListViewSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridUiListViewSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::reactnativelist {
11
+ } // namespace margelo::nitro::reactnativelist
@@ -0,0 +1,121 @@
1
+ ///
2
+ /// HybridUiListViewSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridUiListViewSpec.hpp"
11
+
12
+ // Forward declaration of `HybridUiListViewSpec_cxx` to properly resolve imports.
13
+ namespace ReactNativeList { class HybridUiListViewSpec_cxx; }
14
+
15
+ // Forward declaration of `HybridUiListModuleSpec` to properly resolve imports.
16
+ namespace margelo::nitro::reactnativelist { class HybridUiListModuleSpec; }
17
+ // Forward declaration of `NativeListItem` to properly resolve imports.
18
+ namespace margelo::nitro::reactnativelist { struct NativeListItem; }
19
+ // Forward declaration of `HybridNativeListDataSourceSpec` to properly resolve imports.
20
+ namespace margelo::nitro::reactnativelist { class HybridNativeListDataSourceSpec; }
21
+ // Forward declaration of `HybridNativeListLayoutSpec` to properly resolve imports.
22
+ namespace margelo::nitro::reactnativelist { class HybridNativeListLayoutSpec; }
23
+
24
+ #include <memory>
25
+ #include "HybridUiListModuleSpec.hpp"
26
+ #include <string>
27
+ #include <functional>
28
+ #include "NativeListItem.hpp"
29
+ #include <optional>
30
+ #include <NitroModules/AnyMap.hpp>
31
+ #include "HybridNativeListDataSourceSpec.hpp"
32
+ #include "HybridNativeListLayoutSpec.hpp"
33
+
34
+ #include "ReactNativeList-Swift-Cxx-Umbrella.hpp"
35
+
36
+ namespace margelo::nitro::reactnativelist {
37
+
38
+ /**
39
+ * The C++ part of HybridUiListViewSpec_cxx.swift.
40
+ *
41
+ * HybridUiListViewSpecSwift (C++) accesses HybridUiListViewSpec_cxx (Swift), and might
42
+ * contain some additional bridging code for C++ <> Swift interop.
43
+ *
44
+ * Since this obviously introduces an overhead, I hope at some point in
45
+ * the future, HybridUiListViewSpec_cxx can directly inherit from the C++ class HybridUiListViewSpec
46
+ * to simplify the whole structure and memory management.
47
+ */
48
+ class HybridUiListViewSpecSwift: public virtual HybridUiListViewSpec {
49
+ public:
50
+ // Constructor from a Swift instance
51
+ explicit HybridUiListViewSpecSwift(const ReactNativeList::HybridUiListViewSpec_cxx& swiftPart):
52
+ HybridObject(HybridUiListViewSpec::TAG),
53
+ _swiftPart(swiftPart) { }
54
+
55
+ public:
56
+ // Get the Swift part
57
+ inline ReactNativeList::HybridUiListViewSpec_cxx& getSwiftPart() noexcept {
58
+ return _swiftPart;
59
+ }
60
+
61
+ public:
62
+ inline size_t getExternalMemorySize() noexcept override {
63
+ return _swiftPart.getMemorySize();
64
+ }
65
+ bool equals(const std::shared_ptr<HybridObject>& other) override {
66
+ if (auto otherCast = std::dynamic_pointer_cast<HybridUiListViewSpecSwift>(other)) {
67
+ return _swiftPart.equals(otherCast->_swiftPart);
68
+ }
69
+ return false;
70
+ }
71
+ void dispose() noexcept override {
72
+ _swiftPart.dispose();
73
+ }
74
+ std::string toString() override {
75
+ return _swiftPart.toString();
76
+ }
77
+
78
+ public:
79
+ // Properties
80
+
81
+
82
+ public:
83
+ // Methods
84
+ inline void setListCallbacks(const std::shared_ptr<HybridUiListModuleSpec>& uiListModule, const std::function<double(const std::string& /* type */)>& createView, const std::function<bool(double /* reactTag */, const NativeListItem& /* item */, double /* index */)>& updateView) override {
85
+ auto __result = _swiftPart.setListCallbacks(uiListModule, createView, updateView);
86
+ if (__result.hasError()) [[unlikely]] {
87
+ std::rethrow_exception(__result.error());
88
+ }
89
+ }
90
+ inline void setDataSource(const std::shared_ptr<HybridNativeListDataSourceSpec>& dataSource) override {
91
+ auto __result = _swiftPart.setDataSource(dataSource);
92
+ if (__result.hasError()) [[unlikely]] {
93
+ std::rethrow_exception(__result.error());
94
+ }
95
+ }
96
+ inline void setLayout(const std::shared_ptr<HybridNativeListLayoutSpec>& layout) override {
97
+ auto __result = _swiftPart.setLayout(layout);
98
+ if (__result.hasError()) [[unlikely]] {
99
+ std::rethrow_exception(__result.error());
100
+ }
101
+ }
102
+ inline double getSurfaceId() override {
103
+ auto __result = _swiftPart.getSurfaceId();
104
+ if (__result.hasError()) [[unlikely]] {
105
+ std::rethrow_exception(__result.error());
106
+ }
107
+ auto __value = std::move(__result.value());
108
+ return __value;
109
+ }
110
+ inline void disposeRendererSurface() override {
111
+ auto __result = _swiftPart.disposeRendererSurface();
112
+ if (__result.hasError()) [[unlikely]] {
113
+ std::rethrow_exception(__result.error());
114
+ }
115
+ }
116
+
117
+ private:
118
+ ReactNativeList::HybridUiListViewSpec_cxx _swiftPart;
119
+ };
120
+
121
+ } // namespace margelo::nitro::reactnativelist
@@ -0,0 +1,11 @@
1
+ ///
2
+ /// HybridViewHolderSpecSwift.cpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #include "HybridViewHolderSpecSwift.hpp"
9
+
10
+ namespace margelo::nitro::reactnativelist {
11
+ } // namespace margelo::nitro::reactnativelist
@@ -0,0 +1,75 @@
1
+ ///
2
+ /// HybridViewHolderSpecSwift.hpp
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #pragma once
9
+
10
+ #include "HybridViewHolderSpec.hpp"
11
+
12
+ // Forward declaration of `HybridViewHolderSpec_cxx` to properly resolve imports.
13
+ namespace ReactNativeList { class HybridViewHolderSpec_cxx; }
14
+
15
+
16
+
17
+
18
+
19
+ #include "ReactNativeList-Swift-Cxx-Umbrella.hpp"
20
+
21
+ namespace margelo::nitro::reactnativelist {
22
+
23
+ /**
24
+ * The C++ part of HybridViewHolderSpec_cxx.swift.
25
+ *
26
+ * HybridViewHolderSpecSwift (C++) accesses HybridViewHolderSpec_cxx (Swift), and might
27
+ * contain some additional bridging code for C++ <> Swift interop.
28
+ *
29
+ * Since this obviously introduces an overhead, I hope at some point in
30
+ * the future, HybridViewHolderSpec_cxx can directly inherit from the C++ class HybridViewHolderSpec
31
+ * to simplify the whole structure and memory management.
32
+ */
33
+ class HybridViewHolderSpecSwift: public virtual HybridViewHolderSpec {
34
+ public:
35
+ // Constructor from a Swift instance
36
+ explicit HybridViewHolderSpecSwift(const ReactNativeList::HybridViewHolderSpec_cxx& swiftPart):
37
+ HybridObject(HybridViewHolderSpec::TAG),
38
+ _swiftPart(swiftPart) { }
39
+
40
+ public:
41
+ // Get the Swift part
42
+ inline ReactNativeList::HybridViewHolderSpec_cxx& getSwiftPart() noexcept {
43
+ return _swiftPart;
44
+ }
45
+
46
+ public:
47
+ inline size_t getExternalMemorySize() noexcept override {
48
+ return _swiftPart.getMemorySize();
49
+ }
50
+ bool equals(const std::shared_ptr<HybridObject>& other) override {
51
+ if (auto otherCast = std::dynamic_pointer_cast<HybridViewHolderSpecSwift>(other)) {
52
+ return _swiftPart.equals(otherCast->_swiftPart);
53
+ }
54
+ return false;
55
+ }
56
+ void dispose() noexcept override {
57
+ _swiftPart.dispose();
58
+ }
59
+ std::string toString() override {
60
+ return _swiftPart.toString();
61
+ }
62
+
63
+ public:
64
+ // Properties
65
+
66
+
67
+ public:
68
+ // Methods
69
+
70
+
71
+ private:
72
+ ReactNativeList::HybridViewHolderSpec_cxx _swiftPart;
73
+ };
74
+
75
+ } // namespace margelo::nitro::reactnativelist
@@ -0,0 +1,118 @@
1
+ ///
2
+ /// HybridUiListViewComponent.mm
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #import "HybridUiListViewComponent.hpp"
9
+ #import <memory>
10
+ #import <react/renderer/componentregistry/ComponentDescriptorProvider.h>
11
+ #import <React/RCTViewComponentView.h>
12
+ #import <React/RCTComponentViewFactory.h>
13
+ #import <React/UIView+ComponentViewProtocol.h>
14
+ #import <NitroModules/NitroDefines.hpp>
15
+ #import <UIKit/UIKit.h>
16
+
17
+ #import "HybridUiListViewSpecSwift.hpp"
18
+ #import "ReactNativeList-Swift-Cxx-Umbrella.hpp"
19
+
20
+ #if __has_include(<cxxreact/ReactNativeVersion.h>)
21
+ #include <cxxreact/ReactNativeVersion.h>
22
+ #if REACT_NATIVE_VERSION_MINOR >= 82
23
+ #define ENABLE_RCT_COMPONENT_VIEW_INVALIDATE
24
+ #endif
25
+ #endif
26
+
27
+ using namespace facebook;
28
+ using namespace margelo::nitro::reactnativelist;
29
+ using namespace margelo::nitro::reactnativelist::views;
30
+
31
+ /**
32
+ * Represents the React Native View holder for the Nitro "UiListView" HybridView.
33
+ */
34
+ @interface HybridUiListViewComponent: RCTViewComponentView
35
+ + (BOOL)shouldBeRecycled;
36
+ @end
37
+
38
+ @implementation HybridUiListViewComponent {
39
+ std::shared_ptr<HybridUiListViewSpecSwift> _hybridView;
40
+ }
41
+
42
+ + (void) load {
43
+ [super load];
44
+ [RCTComponentViewFactory.currentComponentViewFactory registerComponentViewClass:[HybridUiListViewComponent class]];
45
+ }
46
+
47
+ + (react::ComponentDescriptorProvider) componentDescriptorProvider {
48
+ return react::concreteComponentDescriptorProvider<HybridUiListViewComponentDescriptor>();
49
+ }
50
+
51
+ - (instancetype) init {
52
+ if (self = [super init]) {
53
+ std::shared_ptr<HybridUiListViewSpec> hybridView = ReactNativeList::ReactNativeListAutolinking::createUiListView();
54
+ _hybridView = std::dynamic_pointer_cast<HybridUiListViewSpecSwift>(hybridView);
55
+ [self updateView];
56
+ }
57
+ return self;
58
+ }
59
+
60
+ - (void) updateView {
61
+ // 1. Get Swift part
62
+ ReactNativeList::HybridUiListViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
63
+
64
+ // 2. Get UIView*
65
+ void* viewUnsafe = swiftPart.getView();
66
+ UIView* view = (__bridge_transfer UIView*) viewUnsafe;
67
+
68
+ // 3. Update RCTViewComponentView's [contentView]
69
+ [self setContentView:view];
70
+ }
71
+
72
+ - (void) updateProps:(const std::shared_ptr<const react::Props>&)props
73
+ oldProps:(const std::shared_ptr<const react::Props>&)oldProps {
74
+ // 1. Downcast props
75
+ const auto& newViewPropsConst = *std::static_pointer_cast<HybridUiListViewProps const>(props);
76
+ auto& newViewProps = const_cast<HybridUiListViewProps&>(newViewPropsConst);
77
+ ReactNativeList::HybridUiListViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
78
+
79
+ // 2. Update each prop individually
80
+ swiftPart.beforeUpdate();
81
+
82
+
83
+
84
+ swiftPart.afterUpdate();
85
+
86
+ // 3. Update hybridRef if it changed
87
+ if (newViewProps.hybridRef.isDirty) {
88
+ // hybridRef changed - call it with new this
89
+ const auto& maybeFunc = newViewProps.hybridRef.value;
90
+ if (maybeFunc.has_value()) {
91
+ maybeFunc.value()(_hybridView);
92
+ }
93
+ newViewProps.hybridRef.isDirty = false;
94
+ }
95
+
96
+ // 4. Continue in base class
97
+ [super updateProps:props oldProps:oldProps];
98
+ }
99
+
100
+ + (BOOL)shouldBeRecycled {
101
+ return ReactNativeList::ReactNativeListAutolinking::isUiListViewRecyclable();
102
+ }
103
+
104
+ - (void)prepareForRecycle {
105
+ [super prepareForRecycle];
106
+ ReactNativeList::HybridUiListViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
107
+ swiftPart.maybePrepareForRecycle();
108
+ }
109
+
110
+ #ifdef ENABLE_RCT_COMPONENT_VIEW_INVALIDATE
111
+ - (void)invalidate {
112
+ ReactNativeList::HybridUiListViewSpec_cxx& swiftPart = _hybridView->getSwiftPart();
113
+ swiftPart.onDropView();
114
+ [super invalidate];
115
+ }
116
+ #endif
117
+
118
+ @end
@@ -0,0 +1,118 @@
1
+ ///
2
+ /// HybridViewHolderComponent.mm
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ #import "HybridViewHolderComponent.hpp"
9
+ #import <memory>
10
+ #import <react/renderer/componentregistry/ComponentDescriptorProvider.h>
11
+ #import <React/RCTViewComponentView.h>
12
+ #import <React/RCTComponentViewFactory.h>
13
+ #import <React/UIView+ComponentViewProtocol.h>
14
+ #import <NitroModules/NitroDefines.hpp>
15
+ #import <UIKit/UIKit.h>
16
+
17
+ #import "HybridViewHolderSpecSwift.hpp"
18
+ #import "ReactNativeList-Swift-Cxx-Umbrella.hpp"
19
+
20
+ #if __has_include(<cxxreact/ReactNativeVersion.h>)
21
+ #include <cxxreact/ReactNativeVersion.h>
22
+ #if REACT_NATIVE_VERSION_MINOR >= 82
23
+ #define ENABLE_RCT_COMPONENT_VIEW_INVALIDATE
24
+ #endif
25
+ #endif
26
+
27
+ using namespace facebook;
28
+ using namespace margelo::nitro::reactnativelist;
29
+ using namespace margelo::nitro::reactnativelist::views;
30
+
31
+ /**
32
+ * Represents the React Native View holder for the Nitro "ViewHolder" HybridView.
33
+ */
34
+ @interface HybridViewHolderComponent: RCTViewComponentView
35
+ + (BOOL)shouldBeRecycled;
36
+ @end
37
+
38
+ @implementation HybridViewHolderComponent {
39
+ std::shared_ptr<HybridViewHolderSpecSwift> _hybridView;
40
+ }
41
+
42
+ + (void) load {
43
+ [super load];
44
+ [RCTComponentViewFactory.currentComponentViewFactory registerComponentViewClass:[HybridViewHolderComponent class]];
45
+ }
46
+
47
+ + (react::ComponentDescriptorProvider) componentDescriptorProvider {
48
+ return react::concreteComponentDescriptorProvider<HybridViewHolderComponentDescriptor>();
49
+ }
50
+
51
+ - (instancetype) init {
52
+ if (self = [super init]) {
53
+ std::shared_ptr<HybridViewHolderSpec> hybridView = ReactNativeList::ReactNativeListAutolinking::createViewHolder();
54
+ _hybridView = std::dynamic_pointer_cast<HybridViewHolderSpecSwift>(hybridView);
55
+ [self updateView];
56
+ }
57
+ return self;
58
+ }
59
+
60
+ - (void) updateView {
61
+ // 1. Get Swift part
62
+ ReactNativeList::HybridViewHolderSpec_cxx& swiftPart = _hybridView->getSwiftPart();
63
+
64
+ // 2. Get UIView*
65
+ void* viewUnsafe = swiftPart.getView();
66
+ UIView* view = (__bridge_transfer UIView*) viewUnsafe;
67
+
68
+ // 3. Update RCTViewComponentView's [contentView]
69
+ [self setContentView:view];
70
+ }
71
+
72
+ - (void) updateProps:(const std::shared_ptr<const react::Props>&)props
73
+ oldProps:(const std::shared_ptr<const react::Props>&)oldProps {
74
+ // 1. Downcast props
75
+ const auto& newViewPropsConst = *std::static_pointer_cast<HybridViewHolderProps const>(props);
76
+ auto& newViewProps = const_cast<HybridViewHolderProps&>(newViewPropsConst);
77
+ ReactNativeList::HybridViewHolderSpec_cxx& swiftPart = _hybridView->getSwiftPart();
78
+
79
+ // 2. Update each prop individually
80
+ swiftPart.beforeUpdate();
81
+
82
+
83
+
84
+ swiftPart.afterUpdate();
85
+
86
+ // 3. Update hybridRef if it changed
87
+ if (newViewProps.hybridRef.isDirty) {
88
+ // hybridRef changed - call it with new this
89
+ const auto& maybeFunc = newViewProps.hybridRef.value;
90
+ if (maybeFunc.has_value()) {
91
+ maybeFunc.value()(_hybridView);
92
+ }
93
+ newViewProps.hybridRef.isDirty = false;
94
+ }
95
+
96
+ // 4. Continue in base class
97
+ [super updateProps:props oldProps:oldProps];
98
+ }
99
+
100
+ + (BOOL)shouldBeRecycled {
101
+ return ReactNativeList::ReactNativeListAutolinking::isViewHolderRecyclable();
102
+ }
103
+
104
+ - (void)prepareForRecycle {
105
+ [super prepareForRecycle];
106
+ ReactNativeList::HybridViewHolderSpec_cxx& swiftPart = _hybridView->getSwiftPart();
107
+ swiftPart.maybePrepareForRecycle();
108
+ }
109
+
110
+ #ifdef ENABLE_RCT_COMPONENT_VIEW_INVALIDATE
111
+ - (void)invalidate {
112
+ ReactNativeList::HybridViewHolderSpec_cxx& swiftPart = _hybridView->getSwiftPart();
113
+ swiftPart.onDropView();
114
+ [super invalidate];
115
+ }
116
+ #endif
117
+
118
+ @end
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_bool_NativeListItem_NativeListItem.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Wraps a Swift `(_ oldItem: NativeListItem, _ newItem: NativeListItem) -> Bool` as a class.
12
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
+ */
14
+ public final class Func_bool_NativeListItem_NativeListItem {
15
+ public typealias bridge = margelo.nitro.reactnativelist.bridge.swift
16
+
17
+ private let closure: (_ oldItem: NativeListItem, _ newItem: NativeListItem) -> Bool
18
+
19
+ public init(_ closure: @escaping (_ oldItem: NativeListItem, _ newItem: NativeListItem) -> Bool) {
20
+ self.closure = closure
21
+ }
22
+
23
+ @inline(__always)
24
+ public func call(oldItem: NativeListItem, newItem: NativeListItem) -> Bool {
25
+ let __result: Bool = self.closure(oldItem, newItem)
26
+ return __result
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_bool_NativeListItem_NativeListItem`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_bool_NativeListItem_NativeListItem>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_bool_NativeListItem_NativeListItem {
45
+ return Unmanaged<Func_bool_NativeListItem_NativeListItem>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_bool_double_NativeListItem_double.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Wraps a Swift `(_ reactTag: Double, _ item: NativeListItem, _ index: Double) -> Bool` as a class.
12
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
+ */
14
+ public final class Func_bool_double_NativeListItem_double {
15
+ public typealias bridge = margelo.nitro.reactnativelist.bridge.swift
16
+
17
+ private let closure: (_ reactTag: Double, _ item: NativeListItem, _ index: Double) -> Bool
18
+
19
+ public init(_ closure: @escaping (_ reactTag: Double, _ item: NativeListItem, _ index: Double) -> Bool) {
20
+ self.closure = closure
21
+ }
22
+
23
+ @inline(__always)
24
+ public func call(reactTag: Double, item: NativeListItem, index: Double) -> Bool {
25
+ let __result: Bool = self.closure(reactTag, item, index)
26
+ return __result
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_bool_double_NativeListItem_double`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_bool_double_NativeListItem_double>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_bool_double_NativeListItem_double {
45
+ return Unmanaged<Func_bool_double_NativeListItem_double>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }
@@ -0,0 +1,47 @@
1
+ ///
2
+ /// Func_double_std__string.swift
3
+ /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
4
+ /// https://github.com/mrousavy/nitro
5
+ /// Copyright © Marc Rousavy @ Margelo
6
+ ///
7
+
8
+ import NitroModules
9
+
10
+ /**
11
+ * Wraps a Swift `(_ type: String) -> Double` as a class.
12
+ * This class can be used from C++, e.g. to wrap the Swift closure as a `std::function`.
13
+ */
14
+ public final class Func_double_std__string {
15
+ public typealias bridge = margelo.nitro.reactnativelist.bridge.swift
16
+
17
+ private let closure: (_ type: String) -> Double
18
+
19
+ public init(_ closure: @escaping (_ type: String) -> Double) {
20
+ self.closure = closure
21
+ }
22
+
23
+ @inline(__always)
24
+ public func call(type: std.string) -> Double {
25
+ let __result: Double = self.closure(String(type))
26
+ return __result
27
+ }
28
+
29
+ /**
30
+ * Casts this instance to a retained unsafe raw pointer.
31
+ * This acquires one additional strong reference on the object!
32
+ */
33
+ @inline(__always)
34
+ public func toUnsafe() -> UnsafeMutableRawPointer {
35
+ return Unmanaged.passRetained(self).toOpaque()
36
+ }
37
+
38
+ /**
39
+ * Casts an unsafe pointer to a `Func_double_std__string`.
40
+ * The pointer has to be a retained opaque `Unmanaged<Func_double_std__string>`.
41
+ * This removes one strong reference from the object!
42
+ */
43
+ @inline(__always)
44
+ public static func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> Func_double_std__string {
45
+ return Unmanaged<Func_double_std__string>.fromOpaque(pointer).takeRetainedValue()
46
+ }
47
+ }