mopro-ffi 0.3.5

Mopro is a toolkit for ZK app development on mobile. Mopro makes client-side proving on mobile simple.
Documentation
// Generated by uniffi-bindgen-react-native
#include <jni.h>
#include <jsi/jsi.h>
#include <ReactCommon/CallInvokerHolder.h>
#include "mopro-ffi.h"

namespace jsi = facebook::jsi;
namespace react = facebook::react;

// Automated testing checks Java_com_moproffi_MoproFfiModule and moproffi
// by comparing the whole line here.
/*
Java_com_moproffi_MoproFfiModule_nativeMultiply(JNIEnv *env, jclass type, jdouble a, jdouble b) {
    return moproffi::multiply(a, b);
}
*/

// Installer coming from MoproFfiModule
extern "C"
JNIEXPORT jboolean JNICALL
Java_com_moproffi_MoproFfiModule_nativeInstallRustCrate(
    JNIEnv *env,
    jclass type,
    jlong rtPtr,
    jobject callInvokerHolderJavaObj
) {
    using JCallInvokerHolder = facebook::react::CallInvokerHolder;

    auto holderLocal = facebook::jni::make_local(callInvokerHolderJavaObj);
    auto holderRef = facebook::jni::static_ref_cast<JCallInvokerHolder::javaobject>(holderLocal);
    auto* holderCxx = holderRef->cthis();
    auto jsCallInvoker = holderCxx->getCallInvoker();
    auto runtime = reinterpret_cast<jsi::Runtime *>(rtPtr);

    return moproffi::installRustCrate(*runtime, jsCallInvoker);
}

extern "C"
JNIEXPORT jboolean JNICALL
Java_com_moproffi_MoproFfiModule_nativeCleanupRustCrate(JNIEnv *env, jclass type, jlong rtPtr) {
    auto runtime = reinterpret_cast<jsi::Runtime *>(rtPtr);
    return moproffi::cleanupRustCrate(*runtime);
}