196 lines
6.9 KiB
Swift
Generated
196 lines
6.9 KiB
Swift
Generated
///
|
|
/// HybridHaptikaPPGFrameProcessorSpec_cxx.swift
|
|
/// This file was generated by nitrogen. DO NOT MODIFY THIS FILE.
|
|
/// https://github.com/mrousavy/nitro
|
|
/// Copyright © Marc Rousavy @ Margelo
|
|
///
|
|
|
|
import NitroModules
|
|
import VisionCamera
|
|
|
|
/**
|
|
* A class implementation that bridges HybridHaptikaPPGFrameProcessorSpec over to C++.
|
|
* In C++, we cannot use Swift protocols - so we need to wrap it in a class to make it strongly defined.
|
|
*
|
|
* Also, some Swift types need to be bridged with special handling:
|
|
* - Enums need to be wrapped in Structs, otherwise they cannot be accessed bi-directionally (Swift bug: https://github.com/swiftlang/swift/issues/75330)
|
|
* - Other HybridObjects need to be wrapped/unwrapped from the Swift TCxx wrapper
|
|
* - Throwing methods need to be wrapped with a Result<T, Error> type, as exceptions cannot be propagated to C++
|
|
*/
|
|
open class HybridHaptikaPPGFrameProcessorSpec_cxx {
|
|
/**
|
|
* The Swift <> C++ bridge's namespace (`margelo::nitro::haptika::ppg::bridge::swift`)
|
|
* from `HaptikaPPG-Swift-Cxx-Bridge.hpp`.
|
|
* This contains specialized C++ templates, and C++ helper functions that can be accessed from Swift.
|
|
*/
|
|
public typealias bridge = margelo.nitro.haptika.ppg.bridge.swift
|
|
|
|
/**
|
|
* Holds an instance of the `HybridHaptikaPPGFrameProcessorSpec` Swift protocol.
|
|
*/
|
|
private var __implementation: any HybridHaptikaPPGFrameProcessorSpec
|
|
|
|
/**
|
|
* Holds a weak pointer to the C++ class that wraps the Swift class.
|
|
*/
|
|
private var __cxxPart: bridge.std__weak_ptr_HybridHaptikaPPGFrameProcessorSpec_
|
|
|
|
/**
|
|
* Create a new `HybridHaptikaPPGFrameProcessorSpec_cxx` that wraps the given `HybridHaptikaPPGFrameProcessorSpec`.
|
|
* All properties and methods bridge to C++ types.
|
|
*/
|
|
public init(_ implementation: any HybridHaptikaPPGFrameProcessorSpec) {
|
|
self.__implementation = implementation
|
|
self.__cxxPart = .init()
|
|
/* no base class */
|
|
}
|
|
|
|
/**
|
|
* Get the actual `HybridHaptikaPPGFrameProcessorSpec` instance this class wraps.
|
|
*/
|
|
@inline(__always)
|
|
public func getHybridHaptikaPPGFrameProcessorSpec() -> any HybridHaptikaPPGFrameProcessorSpec {
|
|
return __implementation
|
|
}
|
|
|
|
/**
|
|
* Casts this instance to a retained unsafe raw pointer.
|
|
* This acquires one additional strong reference on the object!
|
|
*/
|
|
public func toUnsafe() -> UnsafeMutableRawPointer {
|
|
return Unmanaged.passRetained(self).toOpaque()
|
|
}
|
|
|
|
/**
|
|
* Casts an unsafe pointer to a `HybridHaptikaPPGFrameProcessorSpec_cxx`.
|
|
* The pointer has to be a retained opaque `Unmanaged<HybridHaptikaPPGFrameProcessorSpec_cxx>`.
|
|
* This removes one strong reference from the object!
|
|
*/
|
|
public class func fromUnsafe(_ pointer: UnsafeMutableRawPointer) -> HybridHaptikaPPGFrameProcessorSpec_cxx {
|
|
return Unmanaged<HybridHaptikaPPGFrameProcessorSpec_cxx>.fromOpaque(pointer).takeRetainedValue()
|
|
}
|
|
|
|
/**
|
|
* Gets (or creates) the C++ part of this Hybrid Object.
|
|
* The C++ part is a `std::shared_ptr<HybridHaptikaPPGFrameProcessorSpec>`.
|
|
*/
|
|
public func getCxxPart() -> bridge.std__shared_ptr_HybridHaptikaPPGFrameProcessorSpec_ {
|
|
let cachedCxxPart = self.__cxxPart.lock()
|
|
if Bool(fromCxx: cachedCxxPart) {
|
|
return cachedCxxPart
|
|
} else {
|
|
let newCxxPart = bridge.create_std__shared_ptr_HybridHaptikaPPGFrameProcessorSpec_(self.toUnsafe())
|
|
__cxxPart = bridge.weakify_std__shared_ptr_HybridHaptikaPPGFrameProcessorSpec_(newCxxPart)
|
|
return newCxxPart
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
* Get the memory size of the Swift class (plus size of any other allocations)
|
|
* so the JS VM can properly track it and garbage-collect the JS object if needed.
|
|
*/
|
|
@inline(__always)
|
|
public var memorySize: Int {
|
|
return MemoryHelper.getSizeOf(self.__implementation) + self.__implementation.memorySize
|
|
}
|
|
|
|
/**
|
|
* Compares this object with the given [other] object for reference equality.
|
|
*/
|
|
@inline(__always)
|
|
public func equals(other: HybridHaptikaPPGFrameProcessorSpec_cxx) -> Bool {
|
|
return self.__implementation === other.__implementation
|
|
}
|
|
|
|
/**
|
|
* Call dispose() on the Swift class.
|
|
* This _may_ be called manually from JS.
|
|
*/
|
|
@inline(__always)
|
|
public func dispose() {
|
|
self.__implementation.dispose()
|
|
}
|
|
|
|
/**
|
|
* Call toString() on the Swift class.
|
|
*/
|
|
@inline(__always)
|
|
public func toString() -> String {
|
|
return self.__implementation.toString()
|
|
}
|
|
|
|
// Properties
|
|
|
|
|
|
// Methods
|
|
@inline(__always)
|
|
public final func startMeasurement(configuration: NativePPGConfiguration) -> bridge.Result_void_ {
|
|
do {
|
|
try self.__implementation.startMeasurement(configuration: configuration)
|
|
return bridge.create_Result_void_()
|
|
} catch (let __error) {
|
|
let __exceptionPtr = __error.toCpp()
|
|
return bridge.create_Result_void_(__exceptionPtr)
|
|
}
|
|
}
|
|
|
|
@inline(__always)
|
|
public final func processFrame(frame: bridge.std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_) -> bridge.Result_std__optional_PPGFrameUpdate__ {
|
|
do {
|
|
let __result = try self.__implementation.processFrame(frame: { () -> any HybridFrameSpec in
|
|
let __unsafePointer = bridge.get_std__shared_ptr_margelo__nitro__camera__HybridFrameSpec_(frame)
|
|
let __instance = HybridFrameSpec_cxx.fromUnsafe(__unsafePointer)
|
|
return __instance.getHybridFrameSpec()
|
|
}())
|
|
let __resultCpp = { () -> bridge.std__optional_PPGFrameUpdate_ in
|
|
if let __unwrappedValue = __result {
|
|
return bridge.create_std__optional_PPGFrameUpdate_(__unwrappedValue)
|
|
} else {
|
|
return .init()
|
|
}
|
|
}()
|
|
return bridge.create_Result_std__optional_PPGFrameUpdate__(__resultCpp)
|
|
} catch (let __error) {
|
|
let __exceptionPtr = __error.toCpp()
|
|
return bridge.create_Result_std__optional_PPGFrameUpdate__(__exceptionPtr)
|
|
}
|
|
}
|
|
|
|
@inline(__always)
|
|
public final func finishMeasurement() -> bridge.Result_NativePPGProcessingResult_ {
|
|
do {
|
|
let __result = try self.__implementation.finishMeasurement()
|
|
let __resultCpp = __result
|
|
return bridge.create_Result_NativePPGProcessingResult_(__resultCpp)
|
|
} catch (let __error) {
|
|
let __exceptionPtr = __error.toCpp()
|
|
return bridge.create_Result_NativePPGProcessingResult_(__exceptionPtr)
|
|
}
|
|
}
|
|
|
|
@inline(__always)
|
|
public final func cancelMeasurement() -> bridge.Result_void_ {
|
|
do {
|
|
try self.__implementation.cancelMeasurement()
|
|
return bridge.create_Result_void_()
|
|
} catch (let __error) {
|
|
let __exceptionPtr = __error.toCpp()
|
|
return bridge.create_Result_void_(__exceptionPtr)
|
|
}
|
|
}
|
|
|
|
@inline(__always)
|
|
public final func getThermalState() -> bridge.Result_ThermalState_ {
|
|
do {
|
|
let __result = try self.__implementation.getThermalState()
|
|
let __resultCpp = __result
|
|
return bridge.create_Result_ThermalState_(__resultCpp)
|
|
} catch (let __error) {
|
|
let __exceptionPtr = __error.toCpp()
|
|
return bridge.create_Result_ThermalState_(__exceptionPtr)
|
|
}
|
|
}
|
|
}
|