/// /// JFunc_void.hpp /// This file was generated by nitrogen. DO NOT MODIFY THIS FILE. /// https://github.com/mrousavy/nitro /// Copyright © Marc Rousavy @ Margelo /// #pragma once #include #include #include #include namespace margelo::nitro::omni { using namespace facebook; /** * Represents the Java/Kotlin callback `() -> Unit`. * This can be passed around between C++ and Java/Kotlin. */ struct JFunc_void: public jni::JavaClass { public: static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/Func_void;"; public: /** * Invokes the function this `JFunc_void` instance holds through JNI. */ void invoke() const { static const auto method = javaClassStatic()->getMethod("invoke"); method(self()); } }; /** * An implementation of Func_void that is backed by a C++ implementation (using `std::function<...>`) */ class JFunc_void_cxx final: public jni::HybridClass { public: static jni::local_ref fromCpp(const std::function& func) { return JFunc_void_cxx::newObjectCxxArgs(func); } public: /** * Invokes the C++ `std::function<...>` this `JFunc_void_cxx` instance holds. */ void invoke_cxx() { _func(); } public: [[nodiscard]] inline const std::function& getFunction() const { return _func; } public: static constexpr auto kJavaDescriptor = "Lcom/margelo/nitro/omni/Func_void_cxx;"; static void registerNatives() { registerHybrid({makeNativeMethod("invoke_cxx", JFunc_void_cxx::invoke_cxx)}); } private: explicit JFunc_void_cxx(const std::function& func): _func(func) { } private: friend HybridBase; std::function _func; }; } // namespace margelo::nitro::omni