* feat: Create `TypedArray` class for Frame Processor Plugins * Type * feat: Pass `VisionCameraProxy` along (BREAKING) * feat: Finish implementation * Log a bit * feat: Successfully convert JSI <> JNI buffers * Wrap buffer * fix: Fix using wrong Runtime * feat: Add docs * add zero copy example * Format C++ * Create iOS base * feat: Finish iOS implementation * chore: Format * fix: Use `NSData` instead of `NSMutableData` * Format * fix: Fix build when Frame Processors are disabled * chore: Rename `TypedArray` to `SharedArray` * fix: Fix Swift typings for Array * Remove a few default inits * fix: Fix Android build * fix: Use `NSInteger` * Update SharedArray.mm * fix: Expose bytes directly on iOS (NSData was immutable)
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.2 KiB
		
	
	
	
		
			Objective-C
		
	
	
	
	
	
| //
 | |
| //  JSINSObjectConversion.h
 | |
| //  VisionCamera
 | |
| //
 | |
| //  Created by Marc Rousavy on 30.04.21.
 | |
| //  Copyright © 2021 mrousavy. All rights reserved.
 | |
| //
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #import "../Frame Processor/SharedArray.h"
 | |
| #import <React/RCTBridgeModule.h>
 | |
| #import <ReactCommon/CallInvoker.h>
 | |
| #import <jsi/jsi.h>
 | |
| 
 | |
| namespace JSINSObjectConversion {
 | |
| 
 | |
| using namespace facebook;
 | |
| using namespace facebook::react;
 | |
| 
 | |
| // NSNumber -> boolean
 | |
| jsi::Value convertNSNumberToJSIBoolean(jsi::Runtime& runtime, NSNumber* value);
 | |
| 
 | |
| // NSNumber -> number
 | |
| jsi::Value convertNSNumberToJSINumber(jsi::Runtime& runtime, NSNumber* value);
 | |
| 
 | |
| // NSNumber -> string
 | |
| jsi::String convertNSStringToJSIString(jsi::Runtime& runtime, NSString* value);
 | |
| 
 | |
| // NSDictionary -> {}
 | |
| jsi::Object convertNSDictionaryToJSIObject(jsi::Runtime& runtime, NSDictionary* value);
 | |
| 
 | |
| // NSArray -> []
 | |
| jsi::Array convertNSArrayToJSIArray(jsi::Runtime& runtime, NSArray* value);
 | |
| 
 | |
| // SharedArray -> ArrayBuffer
 | |
| jsi::Object convertSharedArrayToJSIArrayBuffer(jsi::Runtime& runtime, SharedArray* sharedArray);
 | |
| 
 | |
| // id -> ???
 | |
| jsi::Value convertObjCObjectToJSIValue(jsi::Runtime& runtime, id value);
 | |
| 
 | |
| // string -> NSString
 | |
| NSString* convertJSIStringToNSString(jsi::Runtime& runtime, const jsi::String& value);
 | |
| 
 | |
| // any... -> NSArray
 | |
| NSArray* convertJSICStyleArrayToNSArray(jsi::Runtime& runtime, const jsi::Value* array, size_t length,
 | |
|                                         std::shared_ptr<CallInvoker> jsInvoker);
 | |
| 
 | |
| // NSArray -> any...
 | |
| jsi::Value* convertNSArrayToJSICStyleArray(jsi::Runtime& runtime, NSArray* array);
 | |
| 
 | |
| // [] -> NSArray
 | |
| NSArray* convertJSIArrayToNSArray(jsi::Runtime& runtime, const jsi::Array& value, std::shared_ptr<CallInvoker> jsInvoker);
 | |
| 
 | |
| // {} -> NSDictionary
 | |
| NSDictionary* convertJSIObjectToNSDictionary(jsi::Runtime& runtime, const jsi::Object& value, std::shared_ptr<CallInvoker> jsInvoker);
 | |
| 
 | |
| // any -> id
 | |
| id convertJSIValueToObjCObject(jsi::Runtime& runtime, const jsi::Value& value, std::shared_ptr<CallInvoker> jsInvoker);
 | |
| 
 | |
| // (any...) => any -> (void)(id, id)
 | |
| RCTResponseSenderBlock convertJSIFunctionToCallback(jsi::Runtime& runtime, const jsi::Function& value,
 | |
|                                                     std::shared_ptr<CallInvoker> jsInvoker);
 | |
| 
 | |
| } // namespace JSINSObjectConversion
 |