/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ #ifdef __cplusplus #include #import /** * Type erased wrapper over any cxx value that can be passed as an argument * to native method. */ @interface RCTManagedPointer : NSObject @property (nonatomic, readonly) void *voidPointer; - (instancetype)initWithPointer:(std::shared_ptr)pointer; @end namespace facebook { namespace react { template RCTManagedPointer *managedPointer(P initializer) { auto ptr = std::shared_ptr(new T(initializer)); return [[RCTManagedPointer alloc] initWithPointer:std::move(ptr)]; } } } #endif