1// Copyright 2022-present 650 Industries. All rights reserved.
2
3#import <ExpoModulesCore/EXJavaScriptTypedArray.h>
4#import <ExpoModulesCore/TypedArray.h>
5
6@implementation EXJavaScriptTypedArray {
7  __weak EXJavaScriptRuntime *_runtime;
8
9  std::shared_ptr<expo::TypedArray> _typedArrayPtr;
10}
11
12- (nonnull instancetype)initWith:(std::shared_ptr<jsi::Object>)jsObjectPtr
13                         runtime:(EXJavaScriptRuntime *)runtime
14{
15  if (self = [super initWith:jsObjectPtr runtime:runtime]) {
16    jsi::Runtime *rt = [runtime get];
17    _runtime = runtime;
18    _typedArrayPtr = std::make_shared<expo::TypedArray>(*rt, *jsObjectPtr.get());
19    _kind = (EXTypedArrayKind)_typedArrayPtr->getKind(*rt);
20  }
21  return self;
22}
23
24- (nonnull void *)getUnsafeMutableRawPointer
25{
26  return _typedArrayPtr->getRawPointer(*[_runtime get]);
27}
28
29@end
30