#include <jni.h>
#include <stdio.h>
#include <stdlib.h>
#include <functional>
#include <string>
#include "include/org_rocksdb_AbstractComparator.h"
#include "include/org_rocksdb_NativeComparatorWrapper.h"
#include "rocksjni/comparatorjnicallback.h"
#include "rocksjni/cplusplus_to_java_convert.h"
#include "rocksjni/portal.h"
jlong Java_org_rocksdb_AbstractComparator_createNewComparator(
JNIEnv* env, jobject jcomparator, jlong copt_handle) {
auto* copt =
reinterpret_cast<ROCKSDB_NAMESPACE::ComparatorJniCallbackOptions*>(
copt_handle);
auto* c =
new ROCKSDB_NAMESPACE::ComparatorJniCallback(env, jcomparator, copt);
return GET_CPLUSPLUS_POINTER(c);
}
jboolean Java_org_rocksdb_AbstractComparator_usingDirectBuffers(JNIEnv*, jclass,
jlong jhandle) {
auto* c =
reinterpret_cast<ROCKSDB_NAMESPACE::ComparatorJniCallback*>(jhandle);
return static_cast<jboolean>(c->m_options->direct_buffer);
}
void Java_org_rocksdb_NativeComparatorWrapper_disposeInternal(
JNIEnv* , jclass , jlong jcomparator_handle) {
auto* comparator =
reinterpret_cast<ROCKSDB_NAMESPACE::Comparator*>(jcomparator_handle);
delete comparator;
}