mirror of
https://github.com/fumiama/android-base16384.git
synced 2026-06-05 02:00:30 +08:00
37 lines
1.4 KiB
C++
37 lines
1.4 KiB
C++
#include <jni.h>
|
|
#include <cstdio>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
#include "base16384.hpp"
|
|
|
|
#define execute(function){\
|
|
const char *inputFileDir = env->GetStringUTFChars(sf, JNI_FALSE);\
|
|
const char *outputFileDir = env->GetStringUTFChars(df, JNI_FALSE);\
|
|
int re = function(inputFileDir, outputFileDir);\
|
|
env->ReleaseStringUTFChars(sf, inputFileDir);\
|
|
env->ReleaseStringUTFChars(df, outputFileDir);\
|
|
return re;\
|
|
}
|
|
|
|
#define exe_byte(fun) {\
|
|
jsize len = env->GetArrayLength(buf);\
|
|
const uint8_t* data = (uint8_t*)env->GetByteArrayElements(buf, JNI_FALSE);\
|
|
LENDAT* ld = fun(data, len);\
|
|
jbyteArray out = env->NewByteArray(ld->len);\
|
|
env->SetByteArrayRegion(out, 0, ld->len, reinterpret_cast<const jbyte *>(ld->data));\
|
|
free(ld->data);\
|
|
free(ld);\
|
|
return out;\
|
|
}
|
|
|
|
extern "C" JNIEXPORT int JNICALL
|
|
Java_top_fumiama_base16384_MainActivity_encode(JNIEnv* env, jobject, jstring sf, jstring df) execute(encode_file)
|
|
|
|
extern "C" JNIEXPORT int JNICALL
|
|
Java_top_fumiama_base16384_MainActivity_decode(JNIEnv* env, jobject, jstring sf, jstring df) execute(decode_file)
|
|
|
|
extern "C" JNIEXPORT jbyteArray JNICALL
|
|
Java_top_fumiama_base16384_MainActivity_encodeByteArray(JNIEnv* env, jobject, jbyteArray buf) exe_byte(encode)
|
|
|
|
extern "C" JNIEXPORT jbyteArray JNICALL
|
|
Java_top_fumiama_base16384_MainActivity_decodeByteArray(JNIEnv* env, jobject, jbyteArray buf) exe_byte(decode) |