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.
- package/LICENSE +20 -20
- package/README.md +51 -29
- package/Yolo.podspec +31 -31
- package/android/CMakeLists.txt +35 -32
- package/android/build.gradle +154 -147
- package/android/fix-prefab.gradle +50 -50
- package/android/gradle.properties +5 -5
- package/android/src/main/AndroidManifest.xml +3 -2
- package/android/src/main/cpp/cpp-adapter.cpp +8 -8
- package/android/src/main/java/com/yolo/HybridYolo.kt +65 -27
- package/android/src/main/java/com/yolo/YoloPackage.kt +20 -29
- package/android/src/main/java/com/yolo/loader/YoloModelLoader.kt +130 -0
- package/android/src/main/java/com/yolo/utils/BitmapOrientationFixer.kt +56 -0
- package/android/src/main/java/com/yolo/utils/ContextProvider.kt +14 -0
- package/android/src/main/java/com/yolo/utils/FrameJpegConverter.kt +27 -0
- package/android/src/main/java/com/yolo/utils/FrameValidator.kt +29 -0
- package/android/src/main/java/com/yolo/utils/Nv21JpegEncoder.kt +34 -0
- package/android/src/main/java/com/yolo/utils/Yuv420ToNv21Converter.kt +62 -0
- package/ios/Bridge.h +8 -8
- package/ios/HybridYolo.swift +14 -21
- package/lib/commonjs/index.js +10 -3
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/index.js +11 -3
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/src/index.d.ts +4 -4
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/specs/yolo.nitro.d.ts +8 -8
- package/lib/typescript/src/specs/yolo.nitro.d.ts.map +1 -1
- package/nitro.json +29 -29
- package/nitrogen/generated/android/Yolo+autolinking.cmake +0 -2
- package/nitrogen/generated/android/YoloOnLoad.cpp +0 -2
- package/nitrogen/generated/android/c++/JHybridYoloSpec.cpp +21 -12
- package/nitrogen/generated/android/c++/JHybridYoloSpec.hpp +4 -3
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/HybridYoloSpec.kt +13 -7
- package/nitrogen/generated/ios/Yolo-Swift-Cxx-Bridge.cpp +11 -0
- package/nitrogen/generated/ios/Yolo-Swift-Cxx-Bridge.hpp +47 -0
- package/nitrogen/generated/ios/Yolo-Swift-Cxx-Umbrella.hpp +8 -0
- package/nitrogen/generated/ios/c++/HybridYoloSpecSwift.hpp +28 -9
- package/nitrogen/generated/ios/swift/HybridYoloSpec.swift +6 -3
- package/nitrogen/generated/ios/swift/HybridYoloSpec_cxx.swift +35 -25
- package/nitrogen/generated/shared/c++/HybridYoloSpec.cpp +3 -2
- package/nitrogen/generated/shared/c++/HybridYoloSpec.hpp +9 -5
- package/package.json +127 -122
- package/src/index.ts +12 -14
- package/src/specs/yolo.nitro.ts +8 -13
- package/nitrogen/generated/android/c++/views/JHybridYoloStateUpdater.cpp +0 -56
- package/nitrogen/generated/android/c++/views/JHybridYoloStateUpdater.hpp +0 -49
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/views/HybridYoloManager.kt +0 -80
- package/nitrogen/generated/android/kotlin/com/margelo/nitro/yolo/views/HybridYoloStateUpdater.kt +0 -23
- package/nitrogen/generated/ios/c++/views/HybridYoloComponent.mm +0 -122
- package/nitrogen/generated/shared/c++/views/HybridYoloComponent.cpp +0 -83
- package/nitrogen/generated/shared/c++/views/HybridYoloComponent.hpp +0 -110
- package/nitrogen/generated/shared/json/YoloConfig.json +0 -10
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
3
|
-
|
|
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,
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
27
|
+
abstract class HybridYoloSpec: HybridObject() {
|
|
28
28
|
// Properties
|
|
29
|
-
|
|
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
|
-
|
|
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
|
|
12
|
+
public protocol HybridYoloSpec_protocol: HybridObject {
|
|
12
13
|
// Properties
|
|
13
|
-
|
|
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
|
-
|
|
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
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
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
|
-
|
|
149
|
-
|
|
150
|
-
|
|
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
|
-
|
|
154
|
-
|
|
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.
|
|
18
|
-
prototype.
|
|
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
|
-
|
|
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
|