Skip to content

Commit 8b230ec

Browse files
committed
✨ feat: Nitro 20
1 parent a44e22f commit 8b230ec

19 files changed

+432
-204
lines changed

example/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
"@react-native/typescript-config": "0.75.2",
3232
"@types/react": "~18.2.45",
3333
"react-native-builder-bob": "^0.30.0",
34-
"react-native-nitro-modules": "0.18.2",
34+
"react-native-nitro-modules": "0.20.0",
3535
"typescript": "^5.1.3"
3636
},
3737
"private": true

example/yarn.lock

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5414,10 +5414,10 @@ react-native-builder-bob@^0.30.0:
54145414
which "^2.0.2"
54155415
yargs "^17.5.1"
54165416

5417-
react-native-nitro-modules@0.18.2:
5418-
version "0.18.2"
5419-
resolved "https://registry.yarnpkg.com/react-native-nitro-modules/-/react-native-nitro-modules-0.18.2.tgz#f1172f90ecaded0e4b3306f6e7be4b54a24b310e"
5420-
integrity sha512-eHsq1cRfm/Bz1Nq7KctTqxAqhzVSNo0WGX281xARZh+vOq8633Qxn1NHRZ5/Rno2Bla6HOXlUW6RoW0wKM/7kg==
5417+
react-native-nitro-modules@0.20.0:
5418+
version "0.20.0"
5419+
resolved "https://registry.yarnpkg.com/react-native-nitro-modules/-/react-native-nitro-modules-0.20.0.tgz#3c659d4c8cbc8038b1bf35af6475e77023e70ffa"
5420+
integrity sha512-u41SaGdQ/EQFuRLFPRQ+cbEemzsARmkElXErwZlXJhr2KYmVwQMrIYGe69NuMSyvHlw3JTl09SNugt3PXa2vEQ==
54215421

54225422
react-native@0.76.5:
54235423
version "0.76.5"

nitrogen/generated/android/c++/JFunc_void_CameraResult.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ namespace margelo::nitro::multipleimagepicker {
3434

3535
public:
3636
void call(jni::alias_ref<JCameraResult> result) {
37-
return _func(result->toCpp());
37+
_func(result->toCpp());
3838
}
3939

4040
public:

nitrogen/generated/android/c++/JFunc_void_CropResult.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ namespace margelo::nitro::multipleimagepicker {
3131

3232
public:
3333
void call(jni::alias_ref<JCropResult> result) {
34-
return _func(result->toCpp());
34+
_func(result->toCpp());
3535
}
3636

3737
public:

nitrogen/generated/android/c++/JFunc_void_double.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace margelo::nitro::multipleimagepicker {
2828

2929
public:
3030
void call(double reject) {
31-
return _func(reject);
31+
_func(reject);
3232
}
3333

3434
public:

nitrogen/generated/android/c++/JFunc_void_std__vector_Result_.hpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,16 @@ namespace margelo::nitro::multipleimagepicker {
3535

3636
public:
3737
void call(jni::alias_ref<jni::JArrayClass<JResult>> result) {
38-
return _func([&]() {
39-
size_t __size = result->size();
40-
std::vector<Result> __vector;
41-
__vector.reserve(__size);
42-
for (size_t __i = 0; __i < __size; __i++) {
43-
auto __element = result->getElement(__i);
44-
__vector.push_back(__element->toCpp());
45-
}
46-
return __vector;
47-
}());
38+
_func([&]() {
39+
size_t __size = result->size();
40+
std::vector<Result> __vector;
41+
__vector.reserve(__size);
42+
for (size_t __i = 0; __i < __size; __i++) {
43+
auto __element = result->getElement(__i);
44+
__vector.push_back(__element->toCpp());
45+
}
46+
return __vector;
47+
}());
4848
}
4949

5050
public:

nitrogen/generated/ios/MultipleImagePicker-Swift-Cxx-Bridge.cpp

Lines changed: 36 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,45 @@
1010
// Include C++ implementation defined types
1111
#include "HybridMultipleImagePickerSpecSwift.hpp"
1212
#include "MultipleImagePicker-Swift-Cxx-Umbrella.hpp"
13-
#include <NitroModules/HybridContext.hpp>
1413

1514
namespace margelo::nitro::multipleimagepicker::bridge::swift {
1615

16+
// pragma MARK: std::function<void(const std::vector<Result>& /* result */)>
17+
Func_void_std__vector_Result_ create_Func_void_std__vector_Result_(void* _Nonnull swiftClosureWrapper) {
18+
auto swiftClosure = MultipleImagePicker::Func_void_std__vector_Result_::fromUnsafe(swiftClosureWrapper);
19+
return [swiftClosure = std::move(swiftClosure)](const std::vector<Result>& result) mutable -> void {
20+
swiftClosure.call(result);
21+
};
22+
}
23+
24+
// pragma MARK: std::function<void(double /* reject */)>
25+
Func_void_double create_Func_void_double(void* _Nonnull swiftClosureWrapper) {
26+
auto swiftClosure = MultipleImagePicker::Func_void_double::fromUnsafe(swiftClosureWrapper);
27+
return [swiftClosure = std::move(swiftClosure)](double reject) mutable -> void {
28+
swiftClosure.call(reject);
29+
};
30+
}
31+
32+
// pragma MARK: std::function<void(const CropResult& /* result */)>
33+
Func_void_CropResult create_Func_void_CropResult(void* _Nonnull swiftClosureWrapper) {
34+
auto swiftClosure = MultipleImagePicker::Func_void_CropResult::fromUnsafe(swiftClosureWrapper);
35+
return [swiftClosure = std::move(swiftClosure)](const CropResult& result) mutable -> void {
36+
swiftClosure.call(result);
37+
};
38+
}
39+
40+
// pragma MARK: std::function<void(const CameraResult& /* result */)>
41+
Func_void_CameraResult create_Func_void_CameraResult(void* _Nonnull swiftClosureWrapper) {
42+
auto swiftClosure = MultipleImagePicker::Func_void_CameraResult::fromUnsafe(swiftClosureWrapper);
43+
return [swiftClosure = std::move(swiftClosure)](const CameraResult& result) mutable -> void {
44+
swiftClosure.call(result);
45+
};
46+
}
47+
1748
// pragma MARK: std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>
1849
std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec> create_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(void* _Nonnull swiftUnsafePointer) {
19-
MultipleImagePicker::HybridMultipleImagePickerSpecCxx swiftPart = MultipleImagePicker::HybridMultipleImagePickerSpecCxxUnsafe::fromUnsafe(swiftUnsafePointer);
20-
return HybridContext::getOrCreate<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpecSwift>(swiftPart);
50+
MultipleImagePicker::HybridMultipleImagePickerSpec_cxx swiftPart = MultipleImagePicker::HybridMultipleImagePickerSpec_cxx::fromUnsafe(swiftUnsafePointer);
51+
return std::make_shared<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpecSwift>(swiftPart);
2152
}
2253
void* _Nonnull get_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ cppType) {
2354
std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpecSwift> swiftWrapper = std::dynamic_pointer_cast<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpecSwift>(cppType);
@@ -26,8 +57,8 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
2657
throw std::runtime_error("Class \"HybridMultipleImagePickerSpec\" is not implemented in Swift!");
2758
}
2859
#endif
29-
MultipleImagePicker::HybridMultipleImagePickerSpecCxx swiftPart = swiftWrapper->getSwiftPart();
30-
return MultipleImagePicker::HybridMultipleImagePickerSpecCxxUnsafe::toUnsafe(swiftPart);
60+
MultipleImagePicker::HybridMultipleImagePickerSpec_cxx swiftPart = swiftWrapper->getSwiftPart();
61+
return swiftPart.toUnsafe();
3162
}
3263

3364
} // namespace margelo::nitro::multipleimagepicker::bridge::swift

nitrogen/generated/ios/MultipleImagePicker-Swift-Cxx-Bridge.hpp

Lines changed: 41 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ namespace margelo::nitro::multipleimagepicker { struct Result; }
3232
namespace margelo::nitro::multipleimagepicker { struct Text; }
3333

3434
// Forward declarations of Swift defined types
35-
// Forward declaration of `HybridMultipleImagePickerSpecCxx` to properly resolve imports.
36-
namespace MultipleImagePicker { class HybridMultipleImagePickerSpecCxx; }
35+
// Forward declaration of `HybridMultipleImagePickerSpec_cxx` to properly resolve imports.
36+
namespace MultipleImagePicker { class HybridMultipleImagePickerSpec_cxx; }
3737

3838
// Include C++ defined types
3939
#include "CameraDevice.hpp"
@@ -47,6 +47,8 @@ namespace MultipleImagePicker { class HybridMultipleImagePickerSpecCxx; }
4747
#include "Result.hpp"
4848
#include "ResultType.hpp"
4949
#include "Text.hpp"
50+
#include <NitroModules/Result.hpp>
51+
#include <exception>
5052
#include <functional>
5153
#include <memory>
5254
#include <optional>
@@ -163,22 +165,16 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
163165
*/
164166
class Func_void_std__vector_Result__Wrapper final {
165167
public:
166-
explicit Func_void_std__vector_Result__Wrapper(const std::function<void(const std::vector<Result>& /* result */)>& func): _function(func) {}
167-
explicit Func_void_std__vector_Result__Wrapper(std::function<void(const std::vector<Result>& /* result */)>&& func): _function(std::move(func)) {}
168+
explicit Func_void_std__vector_Result__Wrapper(std::function<void(const std::vector<Result>& /* result */)>&& func): _function(std::make_shared<std::function<void(const std::vector<Result>& /* result */)>>(std::move(func))) {}
168169
inline void call(std::vector<Result> result) const {
169-
_function(result);
170+
_function->operator()(result);
170171
}
171172
private:
172-
std::function<void(const std::vector<Result>& /* result */)> _function;
173+
std::shared_ptr<std::function<void(const std::vector<Result>& /* result */)>> _function;
173174
};
174-
inline Func_void_std__vector_Result_ create_Func_void_std__vector_Result_(void* _Nonnull closureHolder, void(* _Nonnull call)(void* _Nonnull /* closureHolder */, std::vector<Result>), void(* _Nonnull destroy)(void* _Nonnull)) {
175-
std::shared_ptr<void> sharedClosureHolder(closureHolder, destroy);
176-
return Func_void_std__vector_Result_([sharedClosureHolder, call](const std::vector<Result>& result) -> void {
177-
call(sharedClosureHolder.get(), result);
178-
});
179-
}
180-
inline std::shared_ptr<Func_void_std__vector_Result__Wrapper> share_Func_void_std__vector_Result_(const Func_void_std__vector_Result_& value) {
181-
return std::make_shared<Func_void_std__vector_Result__Wrapper>(value);
175+
Func_void_std__vector_Result_ create_Func_void_std__vector_Result_(void* _Nonnull swiftClosureWrapper);
176+
inline Func_void_std__vector_Result__Wrapper wrap_Func_void_std__vector_Result_(Func_void_std__vector_Result_ value) {
177+
return Func_void_std__vector_Result__Wrapper(std::move(value));
182178
}
183179

184180
// pragma MARK: std::function<void(double /* reject */)>
@@ -191,22 +187,16 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
191187
*/
192188
class Func_void_double_Wrapper final {
193189
public:
194-
explicit Func_void_double_Wrapper(const std::function<void(double /* reject */)>& func): _function(func) {}
195-
explicit Func_void_double_Wrapper(std::function<void(double /* reject */)>&& func): _function(std::move(func)) {}
190+
explicit Func_void_double_Wrapper(std::function<void(double /* reject */)>&& func): _function(std::make_shared<std::function<void(double /* reject */)>>(std::move(func))) {}
196191
inline void call(double reject) const {
197-
_function(reject);
192+
_function->operator()(reject);
198193
}
199194
private:
200-
std::function<void(double /* reject */)> _function;
195+
std::shared_ptr<std::function<void(double /* reject */)>> _function;
201196
};
202-
inline Func_void_double create_Func_void_double(void* _Nonnull closureHolder, void(* _Nonnull call)(void* _Nonnull /* closureHolder */, double), void(* _Nonnull destroy)(void* _Nonnull)) {
203-
std::shared_ptr<void> sharedClosureHolder(closureHolder, destroy);
204-
return Func_void_double([sharedClosureHolder, call](double reject) -> void {
205-
call(sharedClosureHolder.get(), reject);
206-
});
207-
}
208-
inline std::shared_ptr<Func_void_double_Wrapper> share_Func_void_double(const Func_void_double& value) {
209-
return std::make_shared<Func_void_double_Wrapper>(value);
197+
Func_void_double create_Func_void_double(void* _Nonnull swiftClosureWrapper);
198+
inline Func_void_double_Wrapper wrap_Func_void_double(Func_void_double value) {
199+
return Func_void_double_Wrapper(std::move(value));
210200
}
211201

212202
// pragma MARK: std::function<void(const CropResult& /* result */)>
@@ -219,22 +209,16 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
219209
*/
220210
class Func_void_CropResult_Wrapper final {
221211
public:
222-
explicit Func_void_CropResult_Wrapper(const std::function<void(const CropResult& /* result */)>& func): _function(func) {}
223-
explicit Func_void_CropResult_Wrapper(std::function<void(const CropResult& /* result */)>&& func): _function(std::move(func)) {}
212+
explicit Func_void_CropResult_Wrapper(std::function<void(const CropResult& /* result */)>&& func): _function(std::make_shared<std::function<void(const CropResult& /* result */)>>(std::move(func))) {}
224213
inline void call(CropResult result) const {
225-
_function(result);
214+
_function->operator()(result);
226215
}
227216
private:
228-
std::function<void(const CropResult& /* result */)> _function;
217+
std::shared_ptr<std::function<void(const CropResult& /* result */)>> _function;
229218
};
230-
inline Func_void_CropResult create_Func_void_CropResult(void* _Nonnull closureHolder, void(* _Nonnull call)(void* _Nonnull /* closureHolder */, CropResult), void(* _Nonnull destroy)(void* _Nonnull)) {
231-
std::shared_ptr<void> sharedClosureHolder(closureHolder, destroy);
232-
return Func_void_CropResult([sharedClosureHolder, call](const CropResult& result) -> void {
233-
call(sharedClosureHolder.get(), result);
234-
});
235-
}
236-
inline std::shared_ptr<Func_void_CropResult_Wrapper> share_Func_void_CropResult(const Func_void_CropResult& value) {
237-
return std::make_shared<Func_void_CropResult_Wrapper>(value);
219+
Func_void_CropResult create_Func_void_CropResult(void* _Nonnull swiftClosureWrapper);
220+
inline Func_void_CropResult_Wrapper wrap_Func_void_CropResult(Func_void_CropResult value) {
221+
return Func_void_CropResult_Wrapper(std::move(value));
238222
}
239223

240224
// pragma MARK: std::vector<MediaPreview>
@@ -258,22 +242,16 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
258242
*/
259243
class Func_void_CameraResult_Wrapper final {
260244
public:
261-
explicit Func_void_CameraResult_Wrapper(const std::function<void(const CameraResult& /* result */)>& func): _function(func) {}
262-
explicit Func_void_CameraResult_Wrapper(std::function<void(const CameraResult& /* result */)>&& func): _function(std::move(func)) {}
245+
explicit Func_void_CameraResult_Wrapper(std::function<void(const CameraResult& /* result */)>&& func): _function(std::make_shared<std::function<void(const CameraResult& /* result */)>>(std::move(func))) {}
263246
inline void call(CameraResult result) const {
264-
_function(result);
247+
_function->operator()(result);
265248
}
266249
private:
267-
std::function<void(const CameraResult& /* result */)> _function;
250+
std::shared_ptr<std::function<void(const CameraResult& /* result */)>> _function;
268251
};
269-
inline Func_void_CameraResult create_Func_void_CameraResult(void* _Nonnull closureHolder, void(* _Nonnull call)(void* _Nonnull /* closureHolder */, CameraResult), void(* _Nonnull destroy)(void* _Nonnull)) {
270-
std::shared_ptr<void> sharedClosureHolder(closureHolder, destroy);
271-
return Func_void_CameraResult([sharedClosureHolder, call](const CameraResult& result) -> void {
272-
call(sharedClosureHolder.get(), result);
273-
});
274-
}
275-
inline std::shared_ptr<Func_void_CameraResult_Wrapper> share_Func_void_CameraResult(const Func_void_CameraResult& value) {
276-
return std::make_shared<Func_void_CameraResult_Wrapper>(value);
252+
Func_void_CameraResult create_Func_void_CameraResult(void* _Nonnull swiftClosureWrapper);
253+
inline Func_void_CameraResult_Wrapper wrap_Func_void_CameraResult(Func_void_CameraResult value) {
254+
return Func_void_CameraResult_Wrapper(std::move(value));
277255
}
278256

279257
// pragma MARK: std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>
@@ -283,5 +261,18 @@ namespace margelo::nitro::multipleimagepicker::bridge::swift {
283261
using std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ = std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>;
284262
std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec> create_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(void* _Nonnull swiftUnsafePointer);
285263
void* _Nonnull get_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ cppType);
264+
265+
// pragma MARK: std::weak_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>
266+
using std__weak_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ = std::weak_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>;
267+
inline std__weak_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ weakify_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(const std::shared_ptr<margelo::nitro::multipleimagepicker::HybridMultipleImagePickerSpec>& strong) { return strong; }
268+
269+
// pragma MARK: Result<void>
270+
using Result_void_ = Result<void>;
271+
inline Result_void_ create_Result_void_() {
272+
return Result<void>::withValue();
273+
}
274+
inline Result_void_ create_Result_void_(const std::exception_ptr& error) {
275+
return Result<void>::withError(error);
276+
}
286277

287278
} // namespace margelo::nitro::multipleimagepicker::bridge::swift

nitrogen/generated/ios/MultipleImagePicker-Swift-Cxx-Umbrella.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,8 @@ namespace margelo::nitro::multipleimagepicker { enum class Theme; }
7373
#include "SelectMode.hpp"
7474
#include "Text.hpp"
7575
#include "Theme.hpp"
76+
#include <NitroModules/Result.hpp>
77+
#include <exception>
7678
#include <functional>
7779
#include <memory>
7880
#include <optional>
@@ -89,8 +91,8 @@ namespace margelo::nitro::multipleimagepicker { enum class Theme; }
8991
#include <NitroModules/RuntimeError.hpp>
9092

9193
// Forward declarations of Swift defined types
92-
// Forward declaration of `HybridMultipleImagePickerSpecCxx` to properly resolve imports.
93-
namespace MultipleImagePicker { class HybridMultipleImagePickerSpecCxx; }
94+
// Forward declaration of `HybridMultipleImagePickerSpec_cxx` to properly resolve imports.
95+
namespace MultipleImagePicker { class HybridMultipleImagePickerSpec_cxx; }
9496

9597
// Include Swift defined types
9698
#if __has_include("MultipleImagePicker-Swift.h")

nitrogen/generated/ios/MultipleImagePickerAutolinking.swift

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,17 +10,16 @@ public final class MultipleImagePickerAutolinking {
1010

1111
/**
1212
* Creates an instance of a Swift class that implements `HybridMultipleImagePickerSpec`,
13-
* and wraps it in a Swift class that can directly interop with C++ (`HybridMultipleImagePickerSpecCxx`)
13+
* and wraps it in a Swift class that can directly interop with C++ (`HybridMultipleImagePickerSpec_cxx`)
1414
*
1515
* This is generated by Nitrogen and will initialize the class specified
1616
* in the `"autolinking"` property of `nitro.json` (in this case, `HybridMultipleImagePicker`).
1717
*/
1818
public static func createMultipleImagePicker() -> bridge.std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ {
1919
let hybridObject = HybridMultipleImagePicker()
2020
return { () -> bridge.std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_ in
21-
let __cxxWrapped = HybridMultipleImagePickerSpecCxx(hybridObject)
22-
let __pointer = HybridMultipleImagePickerSpecCxxUnsafe.toUnsafe(__cxxWrapped)
23-
return bridge.create_std__shared_ptr_margelo__nitro__multipleimagepicker__HybridMultipleImagePickerSpec_(__pointer)
21+
let __cxxWrapped = hybridObject.getCxxWrapper()
22+
return __cxxWrapped.getCxxPart()
2423
}()
2524
}
2625
}

0 commit comments

Comments
 (0)