1*e1f25825SŁukasz Kosmaty // Copyright 2022-present 650 Industries. All rights reserved.
2*e1f25825SŁukasz Kosmaty 
3*e1f25825SŁukasz Kosmaty #include "ObjectDeallocator.h"
4*e1f25825SŁukasz Kosmaty #include "JSIUtils.h"
5*e1f25825SŁukasz Kosmaty 
6*e1f25825SŁukasz Kosmaty namespace expo::common {
7*e1f25825SŁukasz Kosmaty 
setDeallocator(jsi::Runtime & runtime,const std::shared_ptr<jsi::Object> & jsThis,ObjectDeallocator::Block deallocatorBlock,const std::string & key)8*e1f25825SŁukasz Kosmaty void setDeallocator(
9*e1f25825SŁukasz Kosmaty   jsi::Runtime &runtime,
10*e1f25825SŁukasz Kosmaty   const std::shared_ptr<jsi::Object> &jsThis,
11*e1f25825SŁukasz Kosmaty   ObjectDeallocator::Block deallocatorBlock,
12*e1f25825SŁukasz Kosmaty   const std::string &key
13*e1f25825SŁukasz Kosmaty ) {
14*e1f25825SŁukasz Kosmaty   std::shared_ptr<ObjectDeallocator> hostObjectPtr = std::make_shared<ObjectDeallocator>(
15*e1f25825SŁukasz Kosmaty     deallocatorBlock
16*e1f25825SŁukasz Kosmaty   );
17*e1f25825SŁukasz Kosmaty   jsi::Object jsDeallocator = jsi::Object::createFromHostObject(runtime, hostObjectPtr);
18*e1f25825SŁukasz Kosmaty   jsThis->setProperty(runtime, key.c_str(), jsi::Value(runtime, jsDeallocator));
19*e1f25825SŁukasz Kosmaty }
20*e1f25825SŁukasz Kosmaty 
21*e1f25825SŁukasz Kosmaty } // namespace expo::common
22