// Copyright © 2021-present 650 Industries, Inc. (aka Expo) #pragma once #include "JNIDeallocator.h" #include #include #include #include namespace jni = facebook::jni; namespace react = facebook::react; namespace expo { class JSIInteropModuleRegistry; class JavaCallback : public jni::HybridClass { public: static auto constexpr kJavaDescriptor = "Lexpo/modules/kotlin/jni/JavaCallback;"; static auto constexpr TAG = "JavaCallback"; using Callback = std::function; static void registerNatives(); static jni::local_ref newInstance( JSIInteropModuleRegistry *jsiInteropModuleRegistry, Callback callback ); private: friend HybridBase; JavaCallback(Callback callback); void invoke(); void invokeBool(bool result); void invokeInt(int result); void invokeDouble(double result); void invokeFloat(float result); void invokeString(jni::alias_ref result); void invokeArray(jni::alias_ref result); void invokeMap(jni::alias_ref result); Callback callback; }; } // namespace expo