/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ #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