react-native-yolo 0.0.2 → 0.0.4

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 (53) hide show
  1. package/LICENSE +20 -20
  2. package/README.md +51 -29
  3. package/Yolo.podspec +31 -31
  4. package/android/CMakeLists.txt +35 -32
  5. package/android/build.gradle +154 -147
  6. package/android/fix-prefab.gradle +50 -50
  7. package/android/gradle.properties +5 -5
  8. package/android/src/main/AndroidManifest.xml +3 -2
  9. package/android/src/main/cpp/cpp-adapter.cpp +8 -8
  10. package/android/src/main/java/com/yolo/HybridYolo.kt +65 -27
  11. package/android/src/main/java/com/yolo/YoloPackage.kt +20 -29
  12. package/android/src/main/java/com/yolo/loader/YoloModelLoader.kt +130 -0
  13. package/android/src/main/java/com/yolo/utils/BitmapOrientationFixer.kt +56 -0
  14. package/android/src/main/java/com/yolo/utils/ContextProvider.kt +14 -0
  15. package/android/src/main/java/com/yolo/utils/FrameJpegConverter.kt +27 -0
  16. package/android/src/main/java/com/yolo/utils/FrameValidator.kt +29 -0
  17. package/android/src/main/java/com/yolo/utils/Nv21JpegEncoder.kt +34 -0
  18. package/android/src/main/java/com/yolo/utils/Yuv420ToNv21Converter.kt +62 -0
  19. package/ios/Bridge.h +8 -8
  20. package/ios/HybridYolo.swift +14 -21
  21. package/lib/commonjs/index.js +10 -3
  22. package/lib/commonjs/index.js.map +1 -1
  23. package/lib/module/index.js +11 -3
  24. package/lib/module/index.js.map +1 -1
  25. package/lib/typescript/src/index.d.ts +4 -4
  26. package/lib/typescript/src/index.d.ts.map +1 -1
  27. package/lib/typescript/src/specs/yolo.nitro.d.ts +8 -8
  28. package/lib/typescript/src/specs/yolo.nitro.d.ts.map +1 -1
  29. package/nitro.json +29 -29
  30. package/nitrogen/generated/android/Yolo+autolinking.cmake +0 -2
  31. package/nitrogen/generated/android/YoloOnLoad.cpp +0 -2
  32. package/nitrogen/generated/android/c++/JHybridYoloSpec.cpp +21 -12
  33. package/nitrogen/generated/android/c++/JHybridYoloSpec.hpp +4 -3
  34. package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/HybridYoloSpec.kt +13 -7
  35. package/nitrogen/generated/ios/Yolo-Swift-Cxx-Bridge.cpp +11 -0
  36. package/nitrogen/generated/ios/Yolo-Swift-Cxx-Bridge.hpp +47 -0
  37. package/nitrogen/generated/ios/Yolo-Swift-Cxx-Umbrella.hpp +8 -0
  38. package/nitrogen/generated/ios/c++/HybridYoloSpecSwift.hpp +28 -9
  39. package/nitrogen/generated/ios/swift/HybridYoloSpec.swift +6 -3
  40. package/nitrogen/generated/ios/swift/HybridYoloSpec_cxx.swift +35 -25
  41. package/nitrogen/generated/shared/c++/HybridYoloSpec.cpp +3 -2
  42. package/nitrogen/generated/shared/c++/HybridYoloSpec.hpp +9 -5
  43. package/package.json +127 -122
  44. package/src/index.ts +12 -14
  45. package/src/specs/yolo.nitro.ts +8 -13
  46. package/nitrogen/generated/android/c++/views/JHybridYoloStateUpdater.cpp +0 -56
  47. package/nitrogen/generated/android/c++/views/JHybridYoloStateUpdater.hpp +0 -49
  48. package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/views/HybridYoloManager.kt +0 -80
  49. package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/views/HybridYoloStateUpdater.kt +0 -23
  50. package/nitrogen/generated/ios/c++/views/HybridYoloComponent.mm +0 -122
  51. package/nitrogen/generated/shared/c++/views/HybridYoloComponent.cpp +0 -83
  52. package/nitrogen/generated/shared/c++/views/HybridYoloComponent.hpp +0 -110
  53. package/nitrogen/generated/shared/json/YoloConfig.json +0 -10
@@ -1,11 +1,11 @@
1
- import type { HybridView, HybridViewProps, HybridViewMethods } from 'react-native-nitro-modules';
2
- export interface YoloProps extends HybridViewProps {
3
- isRed: boolean;
4
- }
5
- export interface YoloMethods extends HybridViewMethods {
6
- }
7
- export type Yolo = HybridView<YoloProps, YoloMethods, {
1
+ import type { HybridObject } from 'react-native-nitro-modules';
2
+ import type { Frame } from 'react-native-vision-camera';
3
+ export interface Yolo extends HybridObject<{
8
4
  ios: 'swift';
9
5
  android: 'kotlin';
10
- }>;
6
+ }> {
7
+ sum(num1: number, num2: number): number;
8
+ loadModel(modelPath: string): void;
9
+ frameToBase64(frame: Frame): string;
10
+ }
11
11
  //# sourceMappingURL=yolo.nitro.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"yolo.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/yolo.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,UAAU,EACV,eAAe,EACf,iBAAiB,EAClB,MAAM,4BAA4B,CAAA;AAEnC,MAAM,WAAW,SAAU,SAAQ,eAAe;IAC/C,KAAK,EAAE,OAAO,CAAA;CAChB;AAED,MAAM,WAAW,WAAY,SAAQ,iBAAiB;CAAG;AAEzD,MAAM,MAAM,IAAI,GAAG,UAAU,CAAC,SAAS,EAAE,WAAW,EAAE;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"yolo.nitro.d.ts","sourceRoot":"","sources":["../../../../src/specs/yolo.nitro.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC9D,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,4BAA4B,CAAA;AAEvD,MAAM,WAAW,IAAK,SAAQ,YAAY,CAAC;IAAE,GAAG,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,QAAQ,CAAA;CAAE,CAAC;IAC7E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAAA;IACvC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAA;IAClC,aAAa,CAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;CACpC"}
package/nitro.json CHANGED
@@ -1,30 +1,30 @@
1
- {
2
- "$schema": "https://nitro.margelo.com/nitro.schema.json",
3
- "cxxNamespace": [
4
- "yolo"
5
- ],
6
- "ios": {
7
- "iosModuleName": "Yolo"
8
- },
9
- "android": {
10
- "androidNamespace": [
11
- "yolo"
12
- ],
13
- "androidCxxLibName": "Yolo"
14
- },
15
- "autolinking": {
16
- "Yolo": {
17
- "ios": {
18
- "language": "swift",
19
- "implementationClassName": "HybridYolo"
20
- },
21
- "android": {
22
- "language": "kotlin",
23
- "implementationClassName": "HybridYolo"
24
- }
25
- }
26
- },
27
- "ignorePaths": [
28
- "**/node_modules"
29
- ]
1
+ {
2
+ "$schema": "https://nitro.margelo.com/nitro.schema.json",
3
+ "cxxNamespace": [
4
+ "yolo"
5
+ ],
6
+ "ios": {
7
+ "iosModuleName": "Yolo"
8
+ },
9
+ "android": {
10
+ "androidNamespace": [
11
+ "yolo"
12
+ ],
13
+ "androidCxxLibName": "Yolo"
14
+ },
15
+ "autolinking": {
16
+ "Yolo": {
17
+ "ios": {
18
+ "language": "swift",
19
+ "implementationClassName": "HybridYolo"
20
+ },
21
+ "android": {
22
+ "language": "kotlin",
23
+ "implementationClassName": "HybridYolo"
24
+ }
25
+ }
26
+ },
27
+ "ignorePaths": [
28
+ "**/node_modules"
29
+ ]
30
30
  }
@@ -34,10 +34,8 @@ target_sources(
34
34
  ../nitrogen/generated/android/YoloOnLoad.cpp
35
35
  # Shared Nitrogen C++ sources
36
36
  ../nitrogen/generated/shared/c++/HybridYoloSpec.cpp
37
- ../nitrogen/generated/shared/c++/views/HybridYoloComponent.cpp
38
37
  # Android-specific Nitrogen C++ sources
39
38
  ../nitrogen/generated/android/c++/JHybridYoloSpec.cpp
40
- ../nitrogen/generated/android/c++/views/JHybridYoloStateUpdater.cpp
41
39
  )
42
40
 
43
41
  # From node_modules/react-native/ReactAndroid/cmake-utils/folly-flags.cmake
@@ -16,7 +16,6 @@
16
16
  #include <NitroModules/HybridObjectRegistry.hpp>
17
17
 
18
18
  #include "JHybridYoloSpec.hpp"
19
- #include "views/JHybridYoloStateUpdater.hpp"
20
19
  #include <NitroModules/DefaultConstructableObject.hpp>
21
20
 
22
21
  namespace margelo::nitro::yolo {
@@ -42,7 +41,6 @@ void registerAllNatives() {
42
41
 
43
42
  // Register native JNI methods
44
43
  margelo::nitro::yolo::JHybridYoloSpec::CxxPart::registerNatives();
45
- margelo::nitro::yolo::views::JHybridYoloStateUpdater::registerNatives();
46
44
 
47
45
  // Register Nitro Hybrid Objects
48
46
  HybridObjectRegistry::registerHybridObjectConstructor(
@@ -7,9 +7,13 @@
7
7
 
8
8
  #include "JHybridYoloSpec.hpp"
9
9
 
10
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
11
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
10
12
 
11
-
12
-
13
+ #include <string>
14
+ #include <memory>
15
+ #include <VisionCamera/HybridFrameSpec.hpp>
16
+ #include <VisionCamera/JHybridFrameSpec.hpp>
13
17
 
14
18
  namespace margelo::nitro::yolo {
15
19
 
@@ -41,17 +45,22 @@ namespace margelo::nitro::yolo {
41
45
  }
42
46
 
43
47
  // Properties
44
- bool JHybridYoloSpec::getIsRed() {
45
- static const auto method = _javaPart->javaClassStatic()->getMethod<jboolean()>("isRed");
46
- auto __result = method(_javaPart);
47
- return static_cast<bool>(__result);
48
- }
49
- void JHybridYoloSpec::setIsRed(bool isRed) {
50
- static const auto method = _javaPart->javaClassStatic()->getMethod<void(jboolean /* isRed */)>("setRed");
51
- method(_javaPart, isRed);
52
- }
48
+
53
49
 
54
50
  // Methods
55
-
51
+ double JHybridYoloSpec::sum(double num1, double num2) {
52
+ static const auto method = _javaPart->javaClassStatic()->getMethod<double(double /* num1 */, double /* num2 */)>("sum");
53
+ auto __result = method(_javaPart, num1, num2);
54
+ return __result;
55
+ }
56
+ void JHybridYoloSpec::loadModel(const std::string& modelPath) {
57
+ static const auto method = _javaPart->javaClassStatic()->getMethod<void(jni::alias_ref<jni::JString> /* modelPath */)>("loadModel");
58
+ method(_javaPart, jni::make_jstring(modelPath));
59
+ }
60
+ std::string JHybridYoloSpec::frameToBase64(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) {
61
+ static const auto method = _javaPart->javaClassStatic()->getMethod<jni::local_ref<jni::JString>(jni::alias_ref<margelo::nitro::camera::JHybridFrameSpec::JavaPart> /* frame */)>("frameToBase64");
62
+ auto __result = method(_javaPart, std::dynamic_pointer_cast<margelo::nitro::camera::JHybridFrameSpec>(frame)->getJavaPart());
63
+ return __result->toStdString();
64
+ }
56
65
 
57
66
  } // namespace margelo::nitro::yolo
@@ -50,12 +50,13 @@ namespace margelo::nitro::yolo {
50
50
 
51
51
  public:
52
52
  // Properties
53
- bool getIsRed() override;
54
- void setIsRed(bool isRed) override;
53
+
55
54
 
56
55
  public:
57
56
  // Methods
58
-
57
+ double sum(double num1, double num2) override;
58
+ void loadModel(const std::string& modelPath) override;
59
+ std::string frameToBase64(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) override;
59
60
 
60
61
  private:
61
62
  jni::global_ref<JHybridYoloSpec::JavaPart> _javaPart;
@@ -10,8 +10,8 @@ package com.margelo.nitro.yolo
10
10
  import androidx.annotation.Keep
11
11
  import com.facebook.jni.HybridData
12
12
  import com.facebook.proguard.annotations.DoNotStrip
13
+ import com.margelo.nitro.camera.HybridFrameSpec
13
14
  import com.margelo.nitro.core.HybridObject
14
- import com.margelo.nitro.views.HybridView
15
15
 
16
16
  /**
17
17
  * A Kotlin class representing the Yolo HybridObject.
@@ -24,16 +24,22 @@ import com.margelo.nitro.views.HybridView
24
24
  "RedundantSuppression", "RedundantUnitReturnType", "SimpleRedundantLet",
25
25
  "LocalVariableName", "PropertyName", "PrivatePropertyName", "FunctionName"
26
26
  )
27
- abstract class HybridYoloSpec: HybridView() {
27
+ abstract class HybridYoloSpec: HybridObject() {
28
28
  // Properties
29
- @get:DoNotStrip
30
- @get:Keep
31
- @set:DoNotStrip
32
- @set:Keep
33
- abstract var isRed: Boolean
29
+
34
30
 
35
31
  // Methods
32
+ @DoNotStrip
33
+ @Keep
34
+ abstract fun sum(num1: Double, num2: Double): Double
35
+
36
+ @DoNotStrip
37
+ @Keep
38
+ abstract fun loadModel(modelPath: String): Unit
36
39
 
40
+ @DoNotStrip
41
+ @Keep
42
+ abstract fun frameToBase64(frame: com.margelo.nitro.camera.HybridFrameSpec): String
37
43
 
38
44
  // Default implementation of `HybridObject.toString()`
39
45
  override fun toString(): String {
@@ -11,9 +11,20 @@
11
11
  #include "HybridYoloSpecSwift.hpp"
12
12
  #include "Yolo-Swift-Cxx-Umbrella.hpp"
13
13
  #include <NitroModules/NitroDefines.hpp>
14
+ #include <VisionCamera/VisionCamera-Swift-Cxx-Bridge.hpp>
14
15
 
15
16
  namespace margelo::nitro::yolo::bridge::swift {
16
17
 
18
+ // pragma MARK: std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>
19
+ std::shared_ptr<margelo::nitro::camera::HybridFrameSpec> create_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
20
+ // Implemented in VisionCamera
21
+ return margelo::nitro::camera::bridge::swift::create_std__shared_ptr_HybridFrameSpec_(swiftUnsafePointer);
22
+ }
23
+ void* NON_NULL get_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_ cppType) {
24
+ // Implemented in VisionCamera
25
+ return margelo::nitro::camera::bridge::swift::get_std__shared_ptr_HybridFrameSpec_(cppType);
26
+ }
27
+
17
28
  // pragma MARK: std::shared_ptr<HybridYoloSpec>
18
29
  std::shared_ptr<HybridYoloSpec> create_std__shared_ptr_HybridYoloSpec_(void* NON_NULL swiftUnsafePointer) noexcept {
19
30
  Yolo::HybridYoloSpec_cxx swiftPart = Yolo::HybridYoloSpec_cxx::fromUnsafe(swiftUnsafePointer);
@@ -8,16 +8,24 @@
8
8
  #pragma once
9
9
 
10
10
  // Forward declarations of C++ defined types
11
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
12
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
11
13
  // Forward declaration of `HybridYoloSpec` to properly resolve imports.
12
14
  namespace margelo::nitro::yolo { class HybridYoloSpec; }
13
15
 
14
16
  // Forward declarations of Swift defined types
17
+ // Forward declaration of `HybridFrameSpec_cxx` to properly resolve imports.
18
+ namespace VisionCamera { class HybridFrameSpec_cxx; }
15
19
  // Forward declaration of `HybridYoloSpec_cxx` to properly resolve imports.
16
20
  namespace Yolo { class HybridYoloSpec_cxx; }
17
21
 
18
22
  // Include C++ defined types
19
23
  #include "HybridYoloSpec.hpp"
24
+ #include <NitroModules/Result.hpp>
25
+ #include <VisionCamera/HybridFrameSpec.hpp>
26
+ #include <exception>
20
27
  #include <memory>
28
+ #include <string>
21
29
 
22
30
  /**
23
31
  * Contains specialized versions of C++ templated types so they can be accessed from Swift,
@@ -25,6 +33,18 @@ namespace Yolo { class HybridYoloSpec_cxx; }
25
33
  */
26
34
  namespace margelo::nitro::yolo::bridge::swift {
27
35
 
36
+ // pragma MARK: std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>
37
+ /**
38
+ * Specialized version of `std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>`.
39
+ */
40
+ using std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_ = std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>;
41
+ std::shared_ptr<margelo::nitro::camera::HybridFrameSpec> create_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(void* NON_NULL swiftUnsafePointer) noexcept;
42
+ void* NON_NULL get_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_ cppType);
43
+
44
+ // pragma MARK: std::weak_ptr<margelo::nitro::camera::HybridFrameSpec>
45
+ using std__weak_ptr_margelo__nitro__camera__HybridFrameSpec_ = std::weak_ptr<margelo::nitro::camera::HybridFrameSpec>;
46
+ inline std__weak_ptr_margelo__nitro__camera__HybridFrameSpec_ weakify_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& strong) noexcept { return strong; }
47
+
28
48
  // pragma MARK: std::shared_ptr<HybridYoloSpec>
29
49
  /**
30
50
  * Specialized version of `std::shared_ptr<HybridYoloSpec>`.
@@ -36,5 +56,32 @@ namespace margelo::nitro::yolo::bridge::swift {
36
56
  // pragma MARK: std::weak_ptr<HybridYoloSpec>
37
57
  using std__weak_ptr_HybridYoloSpec_ = std::weak_ptr<HybridYoloSpec>;
38
58
  inline std__weak_ptr_HybridYoloSpec_ weakify_std__shared_ptr_HybridYoloSpec_(const std::shared_ptr<HybridYoloSpec>& strong) noexcept { return strong; }
59
+
60
+ // pragma MARK: Result<double>
61
+ using Result_double_ = Result<double>;
62
+ inline Result_double_ create_Result_double_(double value) noexcept {
63
+ return Result<double>::withValue(std::move(value));
64
+ }
65
+ inline Result_double_ create_Result_double_(const std::exception_ptr& error) noexcept {
66
+ return Result<double>::withError(error);
67
+ }
68
+
69
+ // pragma MARK: Result<void>
70
+ using Result_void_ = Result<void>;
71
+ inline Result_void_ create_Result_void_() noexcept {
72
+ return Result<void>::withValue();
73
+ }
74
+ inline Result_void_ create_Result_void_(const std::exception_ptr& error) noexcept {
75
+ return Result<void>::withError(error);
76
+ }
77
+
78
+ // pragma MARK: Result<std::string>
79
+ using Result_std__string_ = Result<std::string>;
80
+ inline Result_std__string_ create_Result_std__string_(const std::string& value) noexcept {
81
+ return Result<std::string>::withValue(value);
82
+ }
83
+ inline Result_std__string_ create_Result_std__string_(const std::exception_ptr& error) noexcept {
84
+ return Result<std::string>::withError(error);
85
+ }
39
86
 
40
87
  } // namespace margelo::nitro::yolo::bridge::swift
@@ -8,12 +8,18 @@
8
8
  #pragma once
9
9
 
10
10
  // Forward declarations of C++ defined types
11
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
12
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
11
13
  // Forward declaration of `HybridYoloSpec` to properly resolve imports.
12
14
  namespace margelo::nitro::yolo { class HybridYoloSpec; }
13
15
 
14
16
  // Include C++ defined types
15
17
  #include "HybridYoloSpec.hpp"
18
+ #include <NitroModules/Result.hpp>
19
+ #include <VisionCamera/HybridFrameSpec.hpp>
20
+ #include <exception>
16
21
  #include <memory>
22
+ #include <string>
17
23
 
18
24
  // C++ helpers for Swift
19
25
  #include "Yolo-Swift-Cxx-Bridge.hpp"
@@ -25,6 +31,8 @@ namespace margelo::nitro::yolo { class HybridYoloSpec; }
25
31
  #include <NitroModules/DateToChronoDate.hpp>
26
32
 
27
33
  // Forward declarations of Swift defined types
34
+ // Forward declaration of `HybridFrameSpec_cxx` to properly resolve imports.
35
+ namespace VisionCamera { class HybridFrameSpec_cxx; }
28
36
  // Forward declaration of `HybridYoloSpec_cxx` to properly resolve imports.
29
37
  namespace Yolo { class HybridYoloSpec_cxx; }
30
38
 
@@ -12,9 +12,12 @@
12
12
  // Forward declaration of `HybridYoloSpec_cxx` to properly resolve imports.
13
13
  namespace Yolo { class HybridYoloSpec_cxx; }
14
14
 
15
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
16
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
15
17
 
16
-
17
-
18
+ #include <string>
19
+ #include <memory>
20
+ #include <VisionCamera/HybridFrameSpec.hpp>
18
21
 
19
22
  #include "Yolo-Swift-Cxx-Umbrella.hpp"
20
23
 
@@ -62,16 +65,32 @@ namespace margelo::nitro::yolo {
62
65
 
63
66
  public:
64
67
  // Properties
65
- inline bool getIsRed() noexcept override {
66
- return _swiftPart.isRed();
67
- }
68
- inline void setIsRed(bool isRed) noexcept override {
69
- _swiftPart.setIsRed(std::forward<decltype(isRed)>(isRed));
70
- }
68
+
71
69
 
72
70
  public:
73
71
  // Methods
74
-
72
+ inline double sum(double num1, double num2) override {
73
+ auto __result = _swiftPart.sum(std::forward<decltype(num1)>(num1), std::forward<decltype(num2)>(num2));
74
+ if (__result.hasError()) [[unlikely]] {
75
+ std::rethrow_exception(__result.error());
76
+ }
77
+ auto __value = std::move(__result.value());
78
+ return __value;
79
+ }
80
+ inline void loadModel(const std::string& modelPath) override {
81
+ auto __result = _swiftPart.loadModel(modelPath);
82
+ if (__result.hasError()) [[unlikely]] {
83
+ std::rethrow_exception(__result.error());
84
+ }
85
+ }
86
+ inline std::string frameToBase64(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) override {
87
+ auto __result = _swiftPart.frameToBase64(frame);
88
+ if (__result.hasError()) [[unlikely]] {
89
+ std::rethrow_exception(__result.error());
90
+ }
91
+ auto __value = std::move(__result.value());
92
+ return __value;
93
+ }
75
94
 
76
95
  private:
77
96
  Yolo::HybridYoloSpec_cxx _swiftPart;
@@ -5,15 +5,18 @@
5
5
  /// Copyright © Marc Rousavy @ Margelo
6
6
  ///
7
7
 
8
+ import VisionCamera
8
9
  import NitroModules
9
10
 
10
11
  /// See ``HybridYoloSpec``
11
- public protocol HybridYoloSpec_protocol: HybridObject, HybridView {
12
+ public protocol HybridYoloSpec_protocol: HybridObject {
12
13
  // Properties
13
- var isRed: Bool { get set }
14
+
14
15
 
15
16
  // Methods
16
-
17
+ func sum(num1: Double, num2: Double) throws -> Double
18
+ func loadModel(modelPath: String) throws -> Void
19
+ func frameToBase64(frame: (any HybridFrameSpec)) throws -> String
17
20
  }
18
21
 
19
22
  public extension HybridYoloSpec_protocol {
@@ -6,6 +6,7 @@
6
6
  ///
7
7
 
8
8
  import NitroModules
9
+ import VisionCamera
9
10
 
10
11
  /**
11
12
  * A class implementation that bridges HybridYoloSpec over to C++.
@@ -121,36 +122,45 @@ open class HybridYoloSpec_cxx {
121
122
  }
122
123
 
123
124
  // Properties
124
- public final var isRed: Bool {
125
- @inline(__always)
126
- get {
127
- return self.__implementation.isRed
128
- }
129
- @inline(__always)
130
- set {
131
- self.__implementation.isRed = newValue
132
- }
133
- }
125
+
134
126
 
135
127
  // Methods
136
- public final func getView() -> UnsafeMutableRawPointer {
137
- return Unmanaged.passRetained(__implementation.view).toOpaque()
138
- }
139
-
140
- public final func beforeUpdate() {
141
- __implementation.beforeUpdate()
142
- }
143
-
144
- public final func afterUpdate() {
145
- __implementation.afterUpdate()
128
+ @inline(__always)
129
+ public final func sum(num1: Double, num2: Double) -> bridge.Result_double_ {
130
+ do {
131
+ let __result = try self.__implementation.sum(num1: num1, num2: num2)
132
+ let __resultCpp = __result
133
+ return bridge.create_Result_double_(__resultCpp)
134
+ } catch (let __error) {
135
+ let __exceptionPtr = __error.toCpp()
136
+ return bridge.create_Result_double_(__exceptionPtr)
137
+ }
146
138
  }
147
139
 
148
- public final func maybePrepareForRecycle() {
149
- guard let recyclable = __implementation as? any RecyclableView else { return }
150
- recyclable.prepareForRecycle()
140
+ @inline(__always)
141
+ public final func loadModel(modelPath: std.string) -> bridge.Result_void_ {
142
+ do {
143
+ try self.__implementation.loadModel(modelPath: String(modelPath))
144
+ return bridge.create_Result_void_()
145
+ } catch (let __error) {
146
+ let __exceptionPtr = __error.toCpp()
147
+ return bridge.create_Result_void_(__exceptionPtr)
148
+ }
151
149
  }
152
150
 
153
- public final func onDropView() {
154
- __implementation.onDropView()
151
+ @inline(__always)
152
+ public final func frameToBase64(frame: bridge.std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_) -> bridge.Result_std__string_ {
153
+ do {
154
+ let __result = try self.__implementation.frameToBase64(frame: { () -> any HybridFrameSpec in
155
+ let __unsafePointer = bridge.get_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(frame)
156
+ let __instance = HybridFrameSpec_cxx.fromUnsafe(__unsafePointer)
157
+ return __instance.getHybridFrameSpec()
158
+ }())
159
+ let __resultCpp = std.string(__result)
160
+ return bridge.create_Result_std__string_(__resultCpp)
161
+ } catch (let __error) {
162
+ let __exceptionPtr = __error.toCpp()
163
+ return bridge.create_Result_std__string_(__exceptionPtr)
164
+ }
155
165
  }
156
166
  }
@@ -14,8 +14,9 @@ namespace margelo::nitro::yolo {
14
14
  HybridObject::loadHybridMethods();
15
15
  // load custom methods/properties
16
16
  registerHybrids(this, [](Prototype& prototype) {
17
- prototype.registerHybridGetter("isRed", &HybridYoloSpec::getIsRed);
18
- prototype.registerHybridSetter("isRed", &HybridYoloSpec::setIsRed);
17
+ prototype.registerHybridMethod("sum", &HybridYoloSpec::sum);
18
+ prototype.registerHybridMethod("loadModel", &HybridYoloSpec::loadModel);
19
+ prototype.registerHybridMethod("frameToBase64", &HybridYoloSpec::frameToBase64);
19
20
  });
20
21
  }
21
22
 
@@ -13,9 +13,12 @@
13
13
  #error NitroModules cannot be found! Are you sure you installed NitroModules properly?
14
14
  #endif
15
15
 
16
+ // Forward declaration of `HybridFrameSpec` to properly resolve imports.
17
+ namespace margelo::nitro::camera { class HybridFrameSpec; }
16
18
 
17
-
18
-
19
+ #include <string>
20
+ #include <memory>
21
+ #include <VisionCamera/HybridFrameSpec.hpp>
19
22
 
20
23
  namespace margelo::nitro::yolo {
21
24
 
@@ -44,12 +47,13 @@ namespace margelo::nitro::yolo {
44
47
 
45
48
  public:
46
49
  // Properties
47
- virtual bool getIsRed() = 0;
48
- virtual void setIsRed(bool isRed) = 0;
50
+
49
51
 
50
52
  public:
51
53
  // Methods
52
-
54
+ virtual double sum(double num1, double num2) = 0;
55
+ virtual void loadModel(const std::string& modelPath) = 0;
56
+ virtual std::string frameToBase64(const std::shared_ptr<margelo::nitro::camera::HybridFrameSpec>& frame) = 0;
53
57
 
54
58
  protected:
55
59
  // Hybrid Setup